когда ты сказал скинуть я начал копировать, и увидел - <tr id="0"></tr>.
это фикс от бага плейера :-E вобщем из за этого блока было нечетное число - а потом и все криво. спасибо огроменное :D |
убрал его и все работает четко :)
|
Вложений: 1
аа, ксттати есть такой косяк в браузерах, когда кликаешь 2 или 3 раза на одно и тоже место - выделяется текст рядом. вот как выходит у меня
http://javascript.ru/forum/attachmen...d=132603455 3 :( бесит |
кстати придумал как усовершенствовать...
нужно tr с id="play"+переменная[NOWplaying] и tr корорый рядом с ним(снизу от него, это тулбар типа громкость, время, и т.д.) помещались в самый верх, а потом все остальные разбросались в рандомном порядке. Aetae, если сделаешь, еще денежку кину, это ко всем относится =) |
<html>
<body>
Клик.
<table id='music'>
<tr><td>1</td></tr>
<tr><td>2</td></tr>
<tr id="play"><td>play</td></tr>
<tr><td>кplay</td></tr>
<tr><td>3</td></tr>
<tr><td>4</td></tr>
<tr><td>5</td></tr>
<tr><td>6</td></tr>
<tr><td>7</td></tr>
<tr><td>8</td></tr>
<tr><td>9</td></tr>
<tr><td>10</td></tr>
<tr><td>11</td></tr>
<tr><td>12</td></tr>
</table>
<script>
window.onclick = function(){
var d = document,
table = d.getElementById('music'),
fragment = d.createDocumentFragment(),
tr = table.rows,
arr = [], i , j;
table=tr[0].parentNode; //ибо tbody итп
i=d.getElementById('play').rowIndex;
fragment.appendChild(tr[i]);
fragment.appendChild(tr[i]);
i=j=tr.length;
if('v'=='\v') while(i--) arr.push(tr[i]); //ie<9
else arr=arr.slice.call(tr);
table.insertBefore( fragment, tr[0] )
return function(){
i=j;
arr.sort(function(){return .5-Math.random()})
while(i--) table.appendChild( arr[i] )
}
}();
</script>
</body>
</html>
Если я правильно понял. Вообще подгонять скрипт под вёрстку нехорошо. Надо работать сразу над тем и над другим, только тогда будет и красиво и быстро. |
все верно, но у меня мнов все наперекосяк =)
вобщем вверх подняло тр с заданным id. перемешала порядка 5 треков, и все. повторно выполнять функцию не удается. они отсортировались по tr id и прилежащий к нему рядом блок. значит мы друг друга не поняли)) вот как устроена таблица у нас: <table id='music'> <tr id="play2"><td>1</td></tr> <tr><td>1k</td></tr> <tr id="play2"><td>play</td></tr> <tr><td>2k</td></tr> <tr id="play3"><td>3</td></tr> <tr><td>3k</td></tr> .... </table> нам надо чтобы tr getElementById('play'+NOWplaying) поднималась вверх, а остальные разбрасывались в раномном порядке. тоесть типа разбрасывать все блоки с прилежащими к ним, кроме getElementById('play'+NOWplaying) NOWplaying - переменная не должна задаваться функцией, это у нас в скрипте id текушего трека (который вопроизводится) |
<html>
<body>
Клик.
<table id='music'>
<tr id="play1"><td>1</td></tr>
<tr><td>1k</td></tr>
<tr id="play2"><td>play</td></tr>
<tr><td>play2k</td></tr>
<tr id="play3"><td>3</td></tr>
<tr><td>3k</td></tr>
<tr id="play4"><td>4</td></tr>
<tr><td>4k</td></tr>
<tr id="play5"><td>5</td></tr>
<tr><td>5k</td></tr>
</table>
<script>
NOWplaying=2;
window.onclick = function(){
var table = document.getElementById('music'),
tr = table.rows,
i=tr.length, j=i/2,
arr = [];
table=tr[0].parentNode; //ибо tbody итп
while(i--) arr.push([tr[i],tr[--i]]);
return function(){
i=j; arr.sort(function(){return .5-Math.random()});
while(i--) {
if(arr[i][1].id==='play'+NOWplaying){
table.insertBefore( arr[i][0], tr[0] );
table.insertBefore( arr[i][1], tr[0] );
}else{
table.appendChild( arr[i][1] );
table.appendChild( arr[i][0] );
}
}
}
}();
</script>
</body>
</html>
Ток количество tr должно быть четным иначе плохо будет.)) |
тоесть? в какой строке его задавать?
i=j; arr.sort(function(){return .5-Math.random()});
?? |
Не надо ничего задавать.)
Хорошо: <tr></tr> <tr></tr>Плохо: <tr></tr> <tr></tr> <tr></tr> В принципе у вас так и есть, просто малоли лишняя tr попадётся и всё поломает.) Кстати, взглянув
<html>
<body>
Клик.
<table id='music'>
<tr id="play1"><td>1</td></tr>
<tr><td>1k</td></tr>
<tr id="play2"><td>play</td></tr>
<tr><td>play2k</td></tr>
<tr id="play3"><td>3</td></tr>
<tr><td>3k</td></tr>
<tr id="play4"><td>4</td></tr>
<tr><td>4k</td></tr>
<tr id="play5"><td>5</td></tr>
<tr><td>5k</td></tr>
</table>
<script>
NOWplaying=2;
window.onclick = function(){
var table = document.getElementById('music'),
tr = table.rows,
i=tr.length, j=i/2,
arr = [];
table=tr[0].parentNode; //ибо tbody итп
while(i--) arr.push([tr[i],tr[--i]]);
return function(){
i=j; arr.sort(function(){return .5-Math.random()});
while(i--) if(arr[i][1].id!=='play'+NOWplaying){
table.appendChild( arr[i][1] );
table.appendChild( arr[i][0] );
}
}
}();
</script>
</body>
</html>
|
хмм, поставил, ни ошибок, ни раскидывания.... ищю в этом связь...
нашел. переменная table и tr уже используется... исправляю. |
| Часовой пояс GMT +3, время: 23:14. |