сортировка таблицы средствами javascript
function sort(stolbec)
{
var table = document.getElementById("table");
var allRows = table.getElementsByTagName("tr");
for(var i=0; i<allRows.lenght; i++)
{
for(var j=i+1; j=allRows.lenght; j++)
{
var allCells_i = allRows.getElementsByTagName("td");
var allCells_j = allRows[j].getElementsByTagName("td");
if(allCells_i[stolbec] > allCells_j[stolbec])
{
var temp = allRows[j];
allRows[j] = allRows
allRows = temp;
}
}
}
for(var i=0; i=allRows.lenght; i++)
{
table.appendChild(allRows);
}
}
по событию онклик вызываю эту функцию и ничего не происходит?
как вообще отслеживать выполнения кода на javascript&
Цитата:
как вообще отслеживать выполнения кода на javascript
есть firebug, плагин к фаерфоксу (огнелису), так он там и покажет некоторые обшибки
не работает зверский код, копаюсь... натолкните на нужное направление
В firefox помогает нажатие клавиш ctrl+shift+j
<script type="text/javascript">
function sort (stolbec) /*Аргумемнт - номер столбца по которому сортируем таблицу, отсчет от 0*/
{
/*проверяем направление сортироовки, для этого у нас имеется невидимый тег span в конце страницы*/
/*текст в тэге - 1 или 0 по умолчанию 1*/
var napravlen = document.getElementById("napravlen");
if(napravlen.innerText == "1")
{
/*ищем нужную таблицу*/
var table = document.getElementById("table");
/*забираем массив строк таблицы*/
var rows = table.rows;
/*i - переменная для цикла по строкам - индекс рассматриваемой в данный момент строки*/
var i = 1;
/*вычисляем количество строк*/
var lenght = table.rows.length;
while(i < lenght)
{
/*j - перемемнная для цикла по строкам - индекс сравниваемой строки с рассматриваемой строкой*/
var j = i + 1;
while(j < lenght)
{
/*берем маассивы ячеек сравниваемых строк*/
var cell_i = rows.cells;
var cell_j = rows[j].cells;
/*сравниваем значения нужных ячеек*/
if(cell_i[stolbec].innerText > cell_j[stolbec].innerText)
{
/*к - переменная для цикла по ячейкам*/
var k = 0;
/*вычисляем общее количество ячеек*/
var lenght_cell = rows[0].cells.length;
while(k < lenght_cell)
{
/*меняем цвет заголовка (0 строки таблицы) на цвет по умолчанию, типа обнуляем*/
table.rows[0].cells[k].style.background = "#DFDFDF";
/*меняем местами содержимое ячеек*/
var temp = rows[j].cells[k].innerHTML;
rows[j].cells[k].innerHTML = rows.cells[k].innerHTML;
rows.cells[k].innerHTML = temp;
/*меняем местами значения атрибута title строк(там типа вссплывающая подсказка)*/
temp = rows[j].title;
rows[j].title = rows.title;
rows.title = temp;
/*меняем местами цвета ячеек (ипользуется выделение цветом определенных значений)*/
temp = rows[j].cells[k].style.color;
rows[j].cells[k].style.color = rows.cells[k].style.color;
rows.cells[k].style.color = temp;
k = k + 1;
}
}
j=j+1;
}
i=i+1;
}
/*задаем другой цвет нажатой ячейке*/
table.rows[0].cells[stolbec].style.background = "#C0C0C0";
/*меняем значение переменной направления сортировки*/
napravlen.innerText = "0";
/*закругляемся*/
return;
}
/*аналогично только условие сравнения другое*/
if(napravlen.innerText == "0")
{
var table = document.getElementById("table");
var rows = table.rows;
var i = 1;
var lenght = table.rows.length;
while(i < lenght)
{
var j = i + 1;
while(j < lenght)
{
var cell_i = rows.cells;
var cell_j = rows[j].cells;
if(cell_i[stolbec].innerText < cell_j[stolbec].innerText)
{
var k = 0;
var lenght_cell = rows[0].cells.length;
while(k < lenght_cell)
{
table.rows[0].cells[k].style.background = "#DFDFDF";
var temp = rows[j].cells[k].innerHTML;
rows[j].cells[k].innerHTML = rows.cells[k].innerHTML;
rows.cells[k].innerHTML = temp;
temp = rows[j].title;
rows[j].title = rows.title;
rows.title = temp;
temp = rows[j].cells[k].style.color;
rows[j].cells[k].style.color = rows.cells[k].style.color;
rows.cells[k].style.color = temp;
k = k + 1;
}
}
j=j+1;
}
i=i+1;
}
table.rows[0].cells[stolbec].style.background = "#C0C0C0";
napravlen.innerText = "1";
return;
}
}
</script>
такой вопрос: есть одна колонка в таблице чисто числовая, а код сортирует её как строку тоесть вместо 1, 10, 20, 100, 200 пишет 1, 10, 100, 20, 200. как справиться?
значение этой колонки прогонять через
<script type="text/javascript">
function sort (stolbec) /*Аргумемнт - номер столбца по которому сортируем таблицу, отсчет от 0*/
{
/*проверяем направление сортироовки, для этого у нас имеется невидимый тег span в конце страницы*/
/*текст в тэге - 1 или 0 по умолчанию 1*/
var napravlen = document.getElementById("napravlen");
if(napravlen.innerText == "1")
{
/*ищем нужную таблицу*/
var table = document.getElementById("table");
/*забираем массив строк таблицы*/
var rows = table.rows;
/*i - переменная для цикла по строкам - индекс рассматриваемой в данный момент строки*/
var i = 1;
/*вычисляем количество строк*/
var lenght = table.rows.length;
while(i < lenght)
{
/*j - перемемнная для цикла по строкам - индекс сравниваемой строки с рассматриваемой строкой*/
var j = i + 1;
while(j < lenght)
{
/*берем маассивы ячеек сравниваемых строк*/
var cell_i = rows.cells;
var cell_j = rows[j].cells;
if(rows[0].cells[stolbec].innerText != "стоимость")
{
/*сравниваем значения нужных ячеек*/
if(cell_i[stolbec].innerText > cell_j[stolbec].innerText)
{
/*к - переменная для цикла по ячейкам*/
var k = 0;
/*вычисляем общее количество ячеек*/
var lenght_cell = rows[0].cells.length;
while(k < lenght_cell)
{
/*меняем цвет заголовка (0 строки таблицы) на цвет по умолчанию, типа обнуляем*/
table.rows[0].cells[k].style.background = "#DFDFDF";
/*меняем местами содержимое ячеек*/
var temp = rows[j].cells[k].innerText;
rows[j].cells[k].innerText = "";
rows[j].cells[k].innerText = rows.cells[k].innerText;
rows.cells[k].innerText = "";
rows.cells[k].innerText = temp;
/*меняем местами значения атрибута title строк(там типа вссплывающая подсказка)*/
temp = rows[j].title;
rows[j].title = rows.title;
rows.title = temp;
/*меняем местами цвета ячеек (ипользуется выделение цветом определенных значений)*/
temp = rows[j].cells[k].style.color;
rows[j].cells[k].style.color = rows.cells[k].style.color;
rows.cells[k].style.color = temp;
k = k + 1;
}
}
}
if(rows[0].cells[stolbec].innerText == "стоимость")
{
/*сравниваем значения нужных ячеек*/
if(parseInt(cell_i[stolbec].innerText) > parseInt(cell_j[stolbec].innerText))
{
/*к - переменная для цикла по ячейкам*/
var k = 0;
/*вычисляем общее количество ячеек*/
var lenght_cell = rows[0].cells.length;
while(k < lenght_cell)
{
/*меняем цвет заголовка (0 строки таблицы) на цвет по умолчанию, типа обнуляем*/
table.rows[0].cells[k].style.background = "#DFDFDF";
/*меняем местами содержимое ячеек*/
var temp = rows[j].cells[k].innerText;
rows[j].cells[k].innerText = "";
rows[j].cells[k].innerText = rows.cells[k].innerText;
rows.cells[k].innerText = "";
rows.cells[k].innerText = temp;
/*меняем местами значения атрибута title строк(там типа вссплывающая подсказка)*/
temp = rows[j].title;
rows[j].title = rows.title;
rows.title = temp;
/*меняем местами цвета ячеек (ипользуется выделение цветом определенных значений)*/
temp = rows[j].cells[k].style.color;
rows[j].cells[k].style.color = rows.cells[k].style.color;
rows.cells[k].style.color = temp;
k = k + 1;
}
}
}
j=j+1;
}
i=i+1;
}
/*задаем другой цвет нажатой ячейке*/
table.rows[0].cells[stolbec].style.background = "#C0C0C0";
/*меняем значение переменной направления сортировки*/
napravlen.innerText = "0";
/*закругляемся*/
return;
}
/*аналогично только условие сравнения другое*/
if(napravlen.innerText == "0")
{
var table = document.getElementById("table");
var rows = table.rows;
var i = 1;
var lenght = table.rows.length;
while(i < lenght)
{
var j = i + 1;
while(j < lenght)
{
var cell_i = rows.cells;
var cell_j = rows[j].cells;
if(rows[0].cells[stolbec].innerText != "стоимость")
{
/*сравниваем значения нужных ячеек*/
if(cell_i[stolbec].innerText < cell_j[stolbec].innerText)
{
/*к - переменная для цикла по ячейкам*/
var k = 0;
/*вычисляем общее количество ячеек*/
var lenght_cell = rows[0].cells.length;
while(k < lenght_cell)
{
/*меняем цвет заголовка (0 строки таблицы) на цвет по умолчанию, типа обнуляем*/
table.rows[0].cells[k].style.background = "#DFDFDF";
/*меняем местами содержимое ячеек*/
var temp = rows[j].cells[k].innerText;
rows[j].cells[k].innerText = "";
rows[j].cells[k].innerText = rows.cells[k].innerText;
rows.cells[k].innerText = "";
rows.cells[k].innerText = temp;
/*меняем местами значения атрибута title строк(там типа вссплывающая подсказка)*/
temp = rows[j].title;
rows[j].title = rows.title;
rows.title = temp;
/*меняем местами цвета ячеек (ипользуется выделение цветом определенных значений)*/
temp = rows[j].cells[k].style.color;
rows[j].cells[k].style.color = rows.cells[k].style.color;
rows.cells[k].style.color = temp;
k = k + 1;
}
}
}
if(rows[0].cells[stolbec].innerText == "стоимость")
{
/*сравниваем значения нужных ячеек*/
if(parseInt(cell_i[stolbec].innerText) < parseInt(cell_j[stolbec].innerText))
{
/*к - переменная для цикла по ячейкам*/
var k = 0;
/*вычисляем общее количество ячеек*/
var lenght_cell = rows[0].cells.length;
while(k < lenght_cell)
{
/*меняем цвет заголовка (0 строки таблицы) на цвет по умолчанию, типа обнуляем*/
table.rows[0].cells[k].style.background = "#DFDFDF";
/*меняем местами содержимое ячеек*/
var temp = rows[j].cells[k].innerText;
rows[j].cells[k].innerText = "";
rows[j].cells[k].innerText = rows.cells[k].innerText;
rows.cells[k].innerText = "";
rows.cells[k].innerText = temp;
/*меняем местами значения атрибута title строк(там типа вссплывающая подсказка)*/
temp = rows[j].title;
rows[j].title = rows.title;
rows.title = temp;
/*меняем местами цвета ячеек (ипользуется выделение цветом определенных значений)*/
temp = rows[j].cells[k].style.color;
rows[j].cells[k].style.color = rows.cells[k].style.color;
rows.cells[k].style.color = temp;
k = k + 1;
}
}
}
j=j+1;
}
i=i+1;
}
table.rows[0].cells[stolbec].style.background = "#C0C0C0";
napravlen.innerText = "1";
return;
}
}
</script>
только это работает только в опере и эксплорере, в хроме и файрфоксе не работает, кто подскажет почему? и еще в эксплорере, номера телефонов отображаются значками скайпа и при сортировке их число в строке увеличивается, тоже непонятно почему? мож где оптимизировать можно?