Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.04.2012, 22:42
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

Сортировка таблицы, ячейки которой содержат теги
Доброго времени суток!
Вот возник такой вопрос.
Исходные данные:
таблица, которая содержит множество tbody, каждый из которых становится видимым при определенных телодвижениях.
Понадобилось возможность сортировки. Для сортировки есть два поля. Ну и, соответственно, по возрастанию или убыванию.

Написал функцию сортировки. Чета мне подсказывает, что она весьма и весьма топорная. Но к моему удивлению она сортирует строки. Причем, правильно
Я уже было начал пить и хороводы водить, но тут выяснилось, что перестала работать другая функция. Пытаюсь отслеживать что оказывается внутри ячеек после сортировки - показывает, что там все тип-топ. Тогда возникает вопрос, почему не работает

Поскольку, функция корзины работала и до сортировки, то ее я сюда кидать не буду. Скину лишь код сортировки в надежде, что отцы подскажут направление, верный путь и все такое.
Если боян и не нашел ответы существующие - сильно не пинайте, пожурите и подскажите ссылку.

Спасибо.

function sort_up(ntbody,nc)
{
	var ntb = document.getElementById(ntbody);
	var ntr = ntb.rows.length;
	var a = '';
	var a1 = '';
	var a2 = '';
	var a3 = '';
	var a4 = '';
	var a5 = '';
	var a6 = '';
	var a7 = '';
	
	//alert(ntr);
	for (i = 2; i <= ntr; i++)
	{
		//alert('i=' + i);
		for (j=i+1; j < ntr; j++)
		{
			//alert('j=' + j);
			if (nc == 4)
			{
				ll = parseFloat(ntb.rows[j].cells[nc].innerText);
				rr = parseFloat(ntb.rows[i].cells[nc].innerText);
			}
			
			if (nc == 1)
			{
				ll = ntb.rows[j].cells[nc].innerText;
				rr = ntb.rows[i].cells[nc].innerText;
			}
			
			if (ll < rr)
			{
				//alert('YES !!!' + ntb.rows[j].cells[4].innerText + ' < ' + ntb.rows[i].cells[4].innerText);
				
				a = ntb.rows[i].cells[0].innerHTML;
				a1 = ntb.rows[i].cells[1].innerHTML;
				a2 = ntb.rows[i].cells[2].innerHTML;
				a3 = ntb.rows[i].cells[3].innerHTML;
				a4 = ntb.rows[i].cells[4].innerHTML;
				a5 = ntb.rows[i].cells[5].innerHTML;
				a6 = ntb.rows[i].cells[6].innerHTML;
				a7 = ntb.rows[i].cells[7].innerHTML;
				
				ntb.rows[i].cells[0].innerHTML = ntb.rows[j].cells[0].innerHTML;
				ntb.rows[i].cells[1].innerHTML = ntb.rows[j].cells[1].innerHTML;
				ntb.rows[i].cells[2].innerHTML = ntb.rows[j].cells[2].innerHTML;
				ntb.rows[i].cells[3].innerHTML = ntb.rows[j].cells[3].innerHTML;
				ntb.rows[i].cells[4].innerHTML = ntb.rows[j].cells[4].innerHTML;
				ntb.rows[i].cells[5].innerHTML = ntb.rows[j].cells[5].innerHTML;
				ntb.rows[i].cells[6].innerHTML = ntb.rows[j].cells[6].innerHTML;
				ntb.rows[i].cells[7].innerHTML = ntb.rows[j].cells[7].innerHTML;
				
				ntb.rows[j].cells[0].innerHTML = a;
				ntb.rows[j].cells[1].innerHTML = a1;
				ntb.rows[j].cells[2].innerHTML = a2;
				ntb.rows[j].cells[3].innerHTML = a3;
				ntb.rows[j].cells[4].innerHTML = a4;
				ntb.rows[j].cells[5].innerHTML = a5;
				ntb.rows[j].cells[6].innerHTML = a6;
				ntb.rows[j].cells[7].innerHTML = a7;
				
			}
			else
			{
				//alert('NO !!!' + ntb.rows[j].cells[4].innerText + ' > ' + ntb.rows[i].cells[4].innerText);
			}
		}
	}
}

function sort_down(ntbody,nc)
{
	var ntb = document.getElementById(ntbody);
	var ntr = ntb.rows.length;
	var a = '';
	var a1 = '';
	var a2 = '';
	var a3 = '';
	var a4 = '';
	var a5 = '';
	var a6 = '';
	var a7 = '';
	
	//alert(nc);
	for (i = 2; i <= ntr; i++)
	{
		//alert('i=' + i);
		for (j=i+1; j < ntr; j++)
		{
			//alert('j=' + j);
			if (nc == 4)
			{
				ll = parseFloat(ntb.rows[j].cells[nc].innerText);
				rr = parseFloat(ntb.rows[i].cells[nc].innerText);
			}
			
			if (nc == 1)
			{
				ll = ntb.rows[j].cells[nc].innerText;
				rr = ntb.rows[i].cells[nc].innerText;
			}
			
			if (ll > rr)
			{
				//alert('YES !!!' + ntb.rows[j].cells[4].innerText + ' < ' + ntb.rows[i].cells[4].innerText);
				
				a = ntb.rows[i].cells[0].innerHTML;
				a1 = ntb.rows[i].cells[1].innerHTML;
				a2 = ntb.rows[i].cells[2].innerHTML;
				a3 = ntb.rows[i].cells[3].innerHTML;
				a4 = ntb.rows[i].cells[4].innerHTML;
				a5 = ntb.rows[i].cells[5].innerHTML;
				a6 = ntb.rows[i].cells[6].innerHTML;
				a7 = ntb.rows[i].cells[7].innerHTML;
				
				ntb.rows[i].cells[0].innerHTML = ntb.rows[j].cells[0].innerHTML;
				ntb.rows[i].cells[1].innerHTML = ntb.rows[j].cells[1].innerHTML;
				ntb.rows[i].cells[2].innerHTML = ntb.rows[j].cells[2].innerHTML;
				ntb.rows[i].cells[3].innerHTML = ntb.rows[j].cells[3].innerHTML;
				ntb.rows[i].cells[4].innerHTML = ntb.rows[j].cells[4].innerHTML;
				ntb.rows[i].cells[5].innerHTML = ntb.rows[j].cells[5].innerHTML;
				ntb.rows[i].cells[6].innerHTML = ntb.rows[j].cells[6].innerHTML;
				ntb.rows[i].cells[7].innerHTML = ntb.rows[j].cells[7].innerHTML;
				
				ntb.rows[j].cells[0].innerHTML = a;
				ntb.rows[j].cells[1].innerHTML = a1;
				ntb.rows[j].cells[2].innerHTML = a2;
				ntb.rows[j].cells[3].innerHTML = a3;
				ntb.rows[j].cells[4].innerHTML = a4;
				ntb.rows[j].cells[5].innerHTML = a5;
				ntb.rows[j].cells[6].innerHTML = a6;
				ntb.rows[j].cells[7].innerHTML = a7;
				
			}
			else
			{
				//alert('NO !!!' + ntb.rows[j].cells[4].innerText + ' > ' + ntb.rows[i].cells[4].innerText);
			}
		}
	}
}


На всякий случай, скину нтмл-код
<tbody style='display: none; background: #fff' id="tbody_7">
<tr>
<th colspan='8' align='center'><font color='maroon'>Корпуса</font></th>
</tr>
<tr>
<th align='center' style='border: solid 1px black;' width='20'><span>Код товара</span></th>
<th align='center' style='border: solid 1px black;' width='470'><span>Наименование</span><img src='images/down.gif' onclick="sort_down('tbody_7','1')" title='Упорядочить по убыванию'><img src='images/up.gif' onclick="sort_up('tbody_7','1')" title='Упорядочить по возрастанию'></th> 
<th align='center' style='border: solid 1px black;' width='50'><span>ЦПП</span></th>
<th align='center' style='border: solid 1px black;' width='20'><span>Кол-во</span></th>
<th align='center' style='border: solid 1px black;' width='20'><span>Цена, $</span><img src='images/down.gif' onclick="sort_down('tbody_7','4')" title='Упорядочить по убыванию'><img src='images/up.gif' onclick="sort_up('tbody_7','4')" title='Упорядочить по возрастанию'></th>
<th align='center' style='border: solid 1px black;' width='20'><span>Гарантия</span></th>
<th></th>
<th></th>
</tr>
<tr>
<td align='center' width='20'>11245</td><td width='470'><span id="11245">Корпус Topun TP-638J Black+Blu</span></td><td align='center' width='50'>291100</td><td align='center' width='20'> * </td><td align='center' width='20'>0</td>
<td align='center' width='20'>11 мес.</td>
<td align='center'><input type='text' id="q_11245" size='2' vslue=''></td>
<td align='center'><a id="11245-0" href="#" class="addCart">Заказать</a></td>
</tr>
<tr>
<td align='center' width='20'>10693</td><td width='470'><span id="10693">Корпус Topun TP-QH218 500W Black+Red</span></td><td align='center' width='50'>262400</td><td align='center' width='20'> * </td><td align='center' width='20'>34.4</td>
<td align='center' width='20'>11 мес.</td>
<td align='center'><input type='text' id="q_10693" size='2' vslue=''></td>
<td align='center'><a id="10693-34.4" href="#" class="addCart">Заказать</a></td>
</tr>
<tr>
<td align='center' width='20'>10439</td><td width='470'><span id="10439">Корпус Topun TP-QH218 Black+Red</span></td><td align='center' width='50'>291100</td><td align='center' width='20'> * </td><td align='center' width='20'>38.163</td>
<td align='center' width='20'>11 мес.</td>
<td align='center'><input type='text' id="q_10439" size='2' vslue=''></td>
<td align='center'><a id="10439-38.163" href="#" class="addCart">Заказать</a></td>
</tr>
<tr>
<td align='center' width='20'>10440</td><td width='470'><span id="10440">Корпус Topun TP-QH603 400W Black+Violet</span></td><td align='center' width='50'>213200</td><td align='center' width='20'> * </td><td align='center' width='20'>27.95</td>
<td align='center' width='20'>11 мес.</td>
<td align='center'><input type='text' id="q_10440" size='2' vslue=''></td>
<td align='center'><a id="10440-27.95" href="#" class="addCart">Заказать</a></td>
</tr>
</tbody>
Ответить с цитированием
  #2 (permalink)  
Старый 20.04.2012, 22:47
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

может не в ту ветку тему разместил
Ув модераторы, если не трудно и тема не там, перебросьте, пожалуйсто. Спасибо.
Ответить с цитированием
  #3 (permalink)  
Старый 22.04.2012, 17:48
Интересующийся
Отправить личное сообщение для SindBad Посмотреть профиль Найти все сообщения от SindBad
 
Регистрация: 15.03.2011
Сообщений: 11

stos, если я верно понял задачу... используйте для сравнения свойство text, оно вернёт текст внутри элемента строкой, без тегов.
Ответить с цитированием
  #4 (permalink)  
Старый 22.04.2012, 23:27
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

Сообщение от SindBad Посмотреть сообщение
используйте для сравнения свойство text, оно вернёт текст внутри элемента строкой, без тегов.
1. ну так я сравниваю со свойством text
2. мне не надо голый текст внутри тега.
Вы неправильно поняли задачу. Сортировка происходит тип-топ.
До сортировки я одной из ячеек есть ссылка, при нажатии которой происходит вызов функции жука. После сортировки сколько ни жму на эту ссылку - ничего не происходит а надо чтобы происходило.
Ответить с цитированием
  #5 (permalink)  
Старый 23.04.2012, 00:12
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

причем, вот просто затестил. если прописать в ячейку ссылку на джаваскриптовскую функцию, то после сортировки все тип-топ работает.
а вот чета вызов именно функции жука - не воркает
Ответить с цитированием
  #6 (permalink)  
Старый 25.04.2012, 10:13
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

ап, штоле..
Ответить с цитированием
  #7 (permalink)  
Старый 25.04.2012, 22:54
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

неужели ни у кого нет мыслей ?
Ответить с цитированием
  #8 (permalink)  
Старый 29.04.2012, 01:13
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

up...
Ответить с цитированием
  #9 (permalink)  
Старый 29.04.2012, 12:47
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

Сообщение от nasqad Посмотреть сообщение
слишком длинный пост и неясное описание вопроса, по всей видимости у вас есть какая то функция которая в какой то момент не вызывается, при том в вашем примере ее нет, нипанятно
а что неясного в вопросе-то?
всё предельно просто.
исходные данные:
таблица с множеством tbody. внутри tbody есть ячейки, которые содержат ссылки на обработчик jquery. они работают без проблем. но! после того как нажал сортировку, они перестают работать. причем, если в ячейки помещать ссылки на обработчик javascript или обычные ссылки, то всё нормально.
смысла выкладывать сюда функцию жука нет смысла, т.к. перестаёт работать любая функция, даже выводящая обычны алерт!!!
вот в вкратце приведу нужны код:
код ячейки, которая содержит ссылку на обработчик жука:
<td align='center'><a id="11245-0" href="#" class="addCart">Заказать</a></td>


код сортировки, после которой перестают работать ссылки на жука:
function sort_up(ntbody,nc)
{
	var ntb = document.getElementById(ntbody);
	var ntr = ntb.rows.length;
	var a = '';
	var a1 = '';
	var a2 = '';
	var a3 = '';
	var a4 = '';
	var a5 = '';
	var a6 = '';
	var a7 = '';
	
	for (i = 2; i <= ntr; i++)
	{
		for (j=i+1; j < ntr; j++)
		{
			if (nc == 4)
			{
				ll = parseFloat(ntb.rows[j].cells[nc].innerText);
				rr = parseFloat(ntb.rows[i].cells[nc].innerText);
			}
			
			if (nc == 1)
			{
				ll = ntb.rows[j].cells[nc].innerText;
				rr = ntb.rows[i].cells[nc].innerText;
			}
			
			if (ll < rr)
			{								
				a = ntb.rows[i].cells[0].innerHTML;
				a1 = ntb.rows[i].cells[1].innerHTML;
				a2 = ntb.rows[i].cells[2].innerHTML;
				a3 = ntb.rows[i].cells[3].innerHTML;
				a4 = ntb.rows[i].cells[4].innerHTML;
				a5 = ntb.rows[i].cells[5].innerHTML;
				a6 = ntb.rows[i].cells[6].innerHTML;
				a7 = ntb.rows[i].cells[7].innerHTML;
				
				ntb.rows[i].cells[0].innerHTML = ntb.rows[j].cells[0].innerHTML;
				ntb.rows[i].cells[1].innerHTML = ntb.rows[j].cells[1].innerHTML;
				ntb.rows[i].cells[2].innerHTML = ntb.rows[j].cells[2].innerHTML;
				ntb.rows[i].cells[3].innerHTML = ntb.rows[j].cells[3].innerHTML;
				ntb.rows[i].cells[4].innerHTML = ntb.rows[j].cells[4].innerHTML;
				ntb.rows[i].cells[5].innerHTML = ntb.rows[j].cells[5].innerHTML;
				ntb.rows[i].cells[6].innerHTML = ntb.rows[j].cells[6].innerHTML;
				ntb.rows[i].cells[7].innerHTML = ntb.rows[j].cells[7].innerHTML;
				
				ntb.rows[j].cells[0].innerHTML = a;
				ntb.rows[j].cells[1].innerHTML = a1;
				ntb.rows[j].cells[2].innerHTML = a2;
				ntb.rows[j].cells[3].innerHTML = a3;
				ntb.rows[j].cells[4].innerHTML = a4;
				ntb.rows[j].cells[5].innerHTML = a5;
				ntb.rows[j].cells[6].innerHTML = a6;
				ntb.rows[j].cells[7].innerHTML = a7;
				
			}
		}
	}
}
Ответить с цитированием
  #10 (permalink)  
Старый 05.05.2012, 02:21
Интересующийся
Отправить личное сообщение для stos Посмотреть профиль Найти все сообщения от stos
 
Регистрация: 26.12.2011
Сообщений: 28

эххх...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
onmouseout для ячейки таблицы. Sir_Hally Events/DOM/Window 2 24.01.2012 17:21
OnClick ячейки таблицы и ссылки в этой ячейке MasDen Javascript под браузер 2 30.06.2011 10:34
Как получить содержимое ячейки таблицы Enxiro jQuery 5 29.05.2011 16:36
Сортировка таблицы, при помощи js Prizrak177 Общие вопросы Javascript 10 02.09.2010 12:17
позиция рисунка внутри ячейки таблицы. arlek1n Общие вопросы Javascript 11 22.12.2008 10:21