Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Сортировка таблицы. (https://javascript.ru/forum/events/15638-sortirovka-tablicy.html)

Atilla 07.03.2011 16:18

Сортировка таблицы.
 
Есть таблица:
<body onload="align()">
...
<table id="anketa">
	<tr>
		<td>Имя</td>
		<td>Ответ</td>
	</tr>
	<tr>
		<td>Леонов Денис</td>
		<td>Да</td>
	</tr>
	<tr>
		<td>Шилов Кеша</td>
		<td>Да</td>
	</tr>
	...
	<tr>
		<td>Маркин Игорь</td>
		<td>Нет</td>
	</tr>
</table>


function align () {
	anketa=document.getElementById('anketa');

	anketa.lines=anketa.getElementsByTagName('tr').length;
	anketa.columns=anketa.getElementsByTagName('tr')[0].getElementsByTagName('td').length;

	for (i=0; i<anketa.lines; i++) {
		anketa[i]=anketa.getElementsByTagName('tr')[i];
		anketa[i].style.border='1px solid #f00';
		for (j=0; j<anketa.columns; j++) {
			anketa[i][j]=anketa[i].getElementsByTagName('td')[j];
			anketa[i][j].style.border='1px solid #fff';
			if (i==0) anketa[0][j].addEventListener('click', function() {qsorting(j)}, false);
		}	
	}

	sorting(0);
}

function sorting (number) {
	i=1;
	for (i=1; i<9; i++) {
		x=1;
		for (j=1; j<10-i; j++)
			if (anketa[x][number].innerHTML<anketa[j][number].innerHTML) x=j;
		//Ставим наименьший элемент в конец
		anketa.removeChild(anketa[x]);
		anketa.appendChild(anketa[x]);
		dat=anketa[x];
		anketa[x]=anketa[j-1];
		anketa[j-1]=dat;
	}
}



Я почему-то не могу обратится к строкам таблицы как anketa[x], когда при сортировке пытаюсь засунуть строку anketa[x] в конец таблицы.
Хромированный ругается так:
Код:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
на строку
anketa.removeChild(anketa[x]);

В чём может быть проблема?

Sweet 07.03.2011 17:03

В данном скрипте проблем может быть куча!
Во-первых, почему не используешь var? Все переменные пишется свойствами в window. Например,
.addEventListener('click', function() {qsorting(j)}, false);
Здесь уже есть ошибка, но то что j - глобальная переменная, да еще и используется в разных функциях - это ваще край...
Во-вторых, использовать DOM-элементы для хранения своей инфы - бред какой-то.
Да и вообще, все здесь написанное - бред, и говорит о полном непонимании.


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