|
|
|
| Мне надо поднимать и опускать TR в таблице...
Как? желательно с помощью библиотеки prototype...
Заранее спасибо :) | |
|
|
|
|
|
|
|
для: CrazyAngel
(16.07.2008 в 09:37)
| | Не понятно куда поднимать как поднимать.
Конктеризируйте вопрос. | |
|
|
|
|
|
|
|
|
для: CrazyAngel
(16.07.2008 в 09:37)
| | нашел кросс браузерный способ... вот он
function move(selectedRow, direction ){
var target,newPosition;
if (direction == -1) var target = selectedRow.next();
else var target = selectedRow.previous();
if(!target || !target.id) return;
overLayer("yes");
params = new Hash();
params.set('parent', selectedRow.id);
params.set('section', target.id);
params.set('action', 'move');
new Ajax.Request("action.php", {
method: 'get',
parameters: params,
encoding:'cp1251',
onSuccess: function(transport){
moveComplite(transport);
}
});
}
function moveComplite(transport){
var jData = transport.responseText.evalJSON(transport.responseText);
var target = document.getElementById(jData.parent);
var selectedRow = document.getElementById(jData.section);
overLayer("no");
var tempData = target.innerHTML;
target.innerHTML = selectedRow.innerHTML;
selectedRow.innerHTML = tempData;
tempData = target.id;
target.id = selectedRow.id;
selectedRow.id = tempData;
}
|
выдрал из кода, но думаю разобраться можно... | |
|
|
|
|
|
|
|
для: CrazyAngel
(16.07.2008 в 09:37)
| | я когда то делал проще. Всем строкам присваиваешь ID типа tr1 ...trn. Если надо сдвинуть строки вверх, то в цикле document.getElementById("tr"+i).innerHTML = document.getElementById("tr"+i+1).innerHTML . Последнюю строку чистишь или удаляешь, в зависимости от задачи.
Если вниз, то добавляешь строку в конце и делаешь такой же процесс. | |
|
|
|
|
|
|
|
для: GeorgeIV
(18.07.2008 в 10:48)
| | Ну и ГДЕ у вас это "простое" решение работало?
В MSIE, например, TR.innerHTML имеет статус read-only, т.е. узнать innerHTML любой строки в любой момент времени вы сможете, а изменить - не сможете.
Пример кроссбраузерного работающего кода с использованием метода replaceChild:
<html><head>
<meta http-equiv="content-type" content="text/html; charset=win-1251">
<script>
function mf ()
{
var f = document.getElementById ('first').value * 1,
s = document.getElementById ('second').value * 1,
tb = document.getElementById ('tblbod'),
tr = document.getElementById ('tbl').rows;
if (f < 0 || f > tr.length - 1 || s < 0 || s > tr.length - 1 || s == f)
{alert ('Ошибка в номерах строк'); return}
var old_f = tr [f], old_s = tr [s];
var new_f = old_s.cloneNode (1), new_s = old_f.cloneNode (1);
tb.replaceChild (new_f, old_f); tb.replaceChild (new_s, old_s);
}
</script>
</head><body>
<table id="tbl" align="center" cellpadding="5" cellspacing="0" border="1" width="50%"><tbody id="tblbod">
<tr bgcolor="red"><th>каждый</th></tr><tr bgcolor="orange"><th>охотник</th></tr>
<tr bgcolor="yellow"><th>желает</th></tr><tr bgcolor="green"><th>знать</th></tr>
<tr bgcolor="aqua"><th>где</th></tr><tr bgcolor="blue"><th>сидит</th></tr>
<tr bgcolor="violet"><th>фазан</th></tr></tbody></table><hr style="margin-bottom: 50px"><center>
<input type="button" value="Меняем местами" onclick="mf ()"> строку №
<input size="1" id="first"> со строкой №
<input size="1" id="second"><br><br>
(№ строки начинается с 0 и соответствует <span style="color: red">фактическому</span>
положению строки сверху вниз в <span style="color: red">каждый</span> момент времени)</center>
</body></html>
|
| |
|
|
|
|
|
|
|
для: PAT
(18.07.2008 в 15:19)
| | Кода под руками нет, остался у зказчика, но, насколько я помню, read_only строк обходил обертыванием строки в DIV, и уже DIV со строкой перемещался.
Но ваш код правильнее, на мой взгляд. | |
|
|
|