Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.03.2011, 16:18
Интересующийся
Отправить личное сообщение для Atilla Посмотреть профиль Найти все сообщения от Atilla
 
Регистрация: 28.06.2009
Сообщений: 21

Сортировка таблицы.
Есть таблица:
<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]);

В чём может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 07.03.2011, 17:03
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсветка столбцов таблицы ctocopok Элементы интерфейса 31 14.06.2011 01:42
Сортировка таблицы, при помощи js Prizrak177 Общие вопросы Javascript 10 02.09.2010 12:17
Ширина таблицы Syltan (X)HTML/CSS 1 01.05.2010 22:33
Перемещение строк таблицы в Firefox barcelona jQuery 17 23.02.2009 15:41
Фиксированный заголовок таблицы ilshat Элементы интерфейса 6 20.12.2008 00:35