Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вверх/вниз tr
 
 автор: CrazyAngel   (16.07.2008 в 09:37)   письмо автору
 
 

Мне надо поднимать и опускать TR в таблице...
Как? желательно с помощью библиотеки prototype...

Заранее спасибо :)

   
 
 автор: jangot   (17.07.2008 в 14:30)   письмо автору
 
   для: CrazyAngel   (16.07.2008 в 09:37)
 

Не понятно куда поднимать как поднимать.
Конктеризируйте вопрос.

   
 
 автор: PAT   (17.07.2008 в 14:53)   письмо автору
 
   для: CrazyAngel   (16.07.2008 в 09:37)
 

пользуйте метод replaceChild () - подробнее здесь http://msdn.microsoft.com/en-us/library/ms536716(VS.85).aspx

   
 
 автор: CrazyAngel   (18.07.2008 в 10:05)   письмо автору
 
   для: 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;
}


выдрал из кода, но думаю разобраться можно...

   
 
 автор: GeorgeIV   (18.07.2008 в 10:48)   письмо автору
 
   для: CrazyAngel   (16.07.2008 в 09:37)
 

я когда то делал проще. Всем строкам присваиваешь ID типа tr1 ...trn. Если надо сдвинуть строки вверх, то в цикле document.getElementById("tr"+i).innerHTML = document.getElementById("tr"+i+1).innerHTML . Последнюю строку чистишь или удаляешь, в зависимости от задачи.
Если вниз, то добавляешь строку в конце и делаешь такой же процесс.

   
 
 автор: PAT   (18.07.2008 в 15:19)   письмо автору
 
   для: 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>

   
 
 автор: GeorgeIV   (18.07.2008 в 15:58)   письмо автору
 
   для: PAT   (18.07.2008 в 15:19)
 

Кода под руками нет, остался у зказчика, но, насколько я помню, read_only строк обходил обертыванием строки в DIV, и уже DIV со строкой перемещался.
Но ваш код правильнее, на мой взгляд.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования