Обмен атрибутами элементов

  • Автор темы indrikozver
  • Дата начала
I

indrikozver

#1
Помогите пожалуйста где косяк запрятался!
Задача состоит в следующем: есть таблица с элементами которые можно двигать вверх/вниз при нажатии на соответствующие кнопки (двигаются целиком строки <tr/>).

Проблемы возникают только в IE там двигать можно до тех пор пока у каждого элемента не произойдет по одной перемене. После этого скрипт отваливается. Что с этим можно или нужно сделать. Вот код скрипта:
[codebox]function elementSwap(id1, id2) {
var el1 = document.getElementById(id1);
var elt1 = el1.cloneNode(true);
var el2 = document.getElementById(id2);
var buf_id = '';
var elt1_buf;
var inp1;
var inp2;
var buf_str1 = '';
var buf_str2 = '';

if (el1 && el2) {
el2.parentNode.insertBefore(elt1, el2);
el1.parentNode.insertBefore(el2, el1);
el1.parentNode.removeChild(el1);


buf_id = elt1.id;
elt1.id = el2.id;
el2.id = buf_id;



elt1_buf = elt1.cloneNode(true);

buf_str1 = elt1.childNodes[0].childNodes[0].getAttribute('onclick');
buf_str2 = el2.childNodes[0].childNodes[0].getAttribute('onclick');
elt1.childNodes[0].childNodes[0].setAttribute('onclick', buf_str2);
el2.childNodes[0].childNodes[0].setAttribute('onclick', buf_str1);

buf_str1 = elt1.childNodes[0].childNodes[2].getAttribute('onclick');
buf_str2 = el2.childNodes[0].childNodes[2].getAttribute('onclick');
elt1.childNodes[0].childNodes[2].setAttribute('onclick', buf_str2);
el2.childNodes[0].childNodes[2].setAttribute('onclick', buf_str1);

buf_str1 = elt1.childNodes[2].childNodes[0].getAttribute('onclick');
buf_str2 = el2.childNodes[2].childNodes[0].getAttribute('onclick');
elt1.childNodes[2].childNodes[0].setAttribute('onclick', buf_str2);
el2.childNodes[2].childNodes[0].setAttribute('onclick', buf_str1);

inp1 = document.getElementById('ch_'+id1);
inp2 = document.getElementById('ch_'+id2);

buf_str = inp1.name;
inp1.name = inp2.name;
inp2.name = buf_str;
}
}[/codebox]


Код кусочка страницы где проходят замены

[codebox]<div id="suppl_list_pr59">
<table>
<tbody>
<tr id="pr59_0">
<td>
<a onclick="move_down('pr59_0', 'pr59_1'); return false;" href="" class="moving"><img src="/img/btns/move_down.gif"/></a>  <a onclick="move_up('pr59_0', 'pr59_-1'); return false;" href="" class="moving"><img src="/img/btns/move_up.gif"/></a>
</td>
<td>
<input type="checkbox" style="display: none;" checked="" value="26" name="pr59_suppl_arr[0]" id="ch_pr59_0"/>Folic Acid B12
</td>
<td>
<a onclick="del_item('pr59_0'); return false;" href=""><img src="/img/del_btn_16.gif"/></a>
</td>
</tr>
<tr id="pr59_1">
<td>
<a onclick="move_down('pr59_1', 'pr59_2'); return false;" href="" class="moving"><img src="/img/btns/move_down.gif"/></a>  <a onclick="move_up('pr59_1', 'pr59_0'); return false;" href="" class="moving"><img src="/img/btns/move_up.gif"/></a>
</td>
<td>
<input type="checkbox" style="display: none;" checked="" value="27" name="pr59_suppl_arr[1]" id="ch_pr59_1"/>Iodomere
</td>
<td>
<a onclick="del_item('pr59_1'); return false;" href=""><img src="/img/del_btn_16.gif"/></a>
</td>
</tr>
</tbody>
</table>
</div>[/codebox]