Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Разброс блоков в рандом порядке. (https://javascript.ru/forum/dom-window/24631-razbros-blokov-v-random-poryadke.html)

RazZzeR 08.01.2012 11:24

Разброс блоков в рандом порядке.
 
Вложений: 1
Всем привет, это снова я, с бесконемным числом вопросов :D

Сейчас вот что требуется:
Разбросать блоки в рандом порядке.

снова работаю над плейером...

например парент у нас id='music'
а каждый в нем tr - это трек.

http://javascript.ru/forum/attachmen...d=132600723 3


например иходный текст:
<table id='music'>
<tr id='1'>...</tr>
<tr id='2'>...</tr>
<tr id='3'>...</tr>
<tr id='4'>...</tr>
<tr id='5'>...</tr>
<tr id='6'>...</tr>
<tr id='7'>...</tr>
</table>

а что должно получится:



<table id='music'>
<tr id='2'>...</tr>
<tr id='5'>...</tr>
<tr id='7'>...</tr>
<tr id='1'>...</tr>
<tr id='3'>...</tr>
<tr id='4'>...</tr>
<tr id='6'>...</tr>
</table>

тоесть порядок рандомный.
и желательно чтобы innerHTML у этих tr не трогался, дабы не портить содержим

/////////////////////////////////////////

и еще вот попрос.
по этой же теме, но другой.
как получить рандомный блок, например для его редактирования,
если есть парент, например id='music' как выше.



///////// PS
сразу говорю - о гет запросе с построением в рандом порядке уже думал, не подходит.


Заранее благодарен за поддержку, благодарен не на словах

Aetae 08.01.2012 12:07

<table id='music'>
 <tr id='1'><td>1</td></tr>
 <tr id='2'><td>2</td></tr>
 <tr id='3'><td>3</td></tr>
 <tr id='4'><td>4</td></tr>
 <tr id='5'><td>5</td></tr>
 <tr id='6'><td>6</td></tr>
 <tr id='7'><td>7</td></tr>
</table>
<script>
var table=document.getElementById('music'), tr=table.getElementsByTagName('tr'), i=tr.length;
table=tr[0].parentNode; //ибо tbody итп
while(i--) Math.random()<.5 ? table.appendChild(tr[i]) : table.insertBefore( tr[i], table.firstChild );
</script>

RazZzeR 08.01.2012 12:13

;) отлично, давай wmr кошелек

RazZzeR 08.01.2012 12:35

а что если усложнить задачу, и список постраивается у меня вот так:

<table id='music'>
<tr id='1'><td>1</td></tr>
<tr id='p1'><td>1</td></tr>
<tr id='2'><td>2</td></tr>
<tr id='p2'><td>2</td></tr>
<tr id='3'><td>3</td></tr>
<tr id='p3'><td>3</td></tr>
<tr id='4'><td>4</td></tr>
<tr id='p4'><td>4</td></tr>
<tr id='5'><td>5</td></tr>
<tr id='p5'><td>5</td></tr>
<tr id='6'><td>6</td></tr>
<tr id='p6'><td>6</td></tr>
<tr id='7'><td>7</td></tr>
<tr id='p7'><td>7</td></tr>
</table>


и список надо построить вот так:



<table id='music'>
<tr id='6'><td>6</td></tr>
<tr id='p6'><td>6</td></tr>
<tr id='4'><td>4</td></tr>
<tr id='p4'><td>4</td></tr>
<tr id='2'><td>2</td></tr>
<tr id='p2'><td>2</td></tr>
<tr id='3'><td>3</td></tr>
<tr id='p3'><td>3</td></tr>
<tr id='5'><td>5</td></tr>
<tr id='p5'><td>5</td></tr>
<tr id='7'><td>7</td></tr>
<tr id='p7'><td>7</td></tr>
<tr id='1'><td>1</td></tr>
<tr id='p1'><td>1</td></tr>
</table>

(в рандомном порядке, но рядом с ним должен быть блок p[число]

RazZzeR 08.01.2012 13:38

imposible?

Aetae 08.01.2012 14:01

Да нет, я просто на работе какбэ)
<table id='music'>
 <tr><td>1</td></tr>
 <tr><td>к1</td></tr>
 <tr><td>2</td></tr>
 <tr><td>к2</td></tr>
 <tr><td>3</td></tr>
 <tr><td>к3</td></tr>
 <tr><td>4</td></tr>
 <tr><td>к4</td></tr>
 <tr><td>5</td></tr>
 <tr><td>к5</td></tr>
 <tr><td>6</td></tr>
 <tr><td>к6</td></tr>
 <tr><td>7</td></tr>
 <tr><td>к7</td></tr>
</table>
<script>
(function(){
  var rand, table=document.getElementById('music'), tr=[].slice.call(table.getElementsByTagName('tr')), i=tr.length;
  table=tr[0].parentNode; //ибо tbody итп
  while(i--){
    if(i%2) rand = Math.random()<.5;
    table.insertBefore( tr[i], rand ? table.firstChild : i%2 ? null : table.lastChild )
  }
})()
</script>


R117571207359

RazZzeR 08.01.2012 14:06

очень благодарен. скидываю бонусик 300 вмр, надеюсь не мало :)
буду признателен если аську оставишь, у меня много работы есть для профи =3

RazZzeR 08.01.2012 14:12

эх, только всеравно рано или позно глюк происходит. наверно надо обнулять переменную. сейчас попробую

RazZzeR 08.01.2012 14:16

тоесть если функцию выполнять раз 5-6 то они не ровно стоят. тоесть например

1
к1

2
к3

RazZzeR 08.01.2012 14:17

аа, кстати как еще сделать чтобы абсолютно весь список рандомно перевернулся?


Часовой пояс GMT +3, время: 05:27.