Сортировка элементов по значению. HElp
Доброе время суток.
Вопрос в следующем ... Созданы элементы : var bus_button = document.createElement('button') bus_button.name = "bus_button"; bus_button.innerHTML = line_db[i].name; document.getElementById("test_bus").appendChild(bu s_button) Котороые надо отсортировать. Я попробовал сделать это перебором. var tableElem = document.getElementById("test_bus") for (var i = 1;tableElem.children.length-2; i++) { if (+(tableElem.children[i].innerHTML) > +(tableElem.children[i+1].innerHTML)) { alert(i) var cons = tableElem.children[i].innerHTML tableElem.children[i].innerHTML = tableElem.children[i+1].innerHTML tableElem.children[i+1].innerHTML = cons ; }; }; Все хорошо до тех пор, пока элементы из обьекта с параметром line_db[i].name не стоновятся смешанного типа .... (Т112). Я думал что можно попробовать решить эту проблему с помошью, рег. выражения. Но как не могу уже 4 день понять ... :help: Как я понимаю надо найти литерал и исключить его из выражения сортировки... |
Кое что проеснил ...
Так как возможна 1 буква ... то
if (+(tableElem.children[i].innerHTML.replace(/\D+/g,"")) > +(tableElem.children[i+1].innerHTML.replace(/\D+/g,""))) { но при этом на последнем элементе : Uncaught TypeError: Cannot read property 'innerHTML' of undefined .... как это решить? |
Цитата:
|
Цитата:
for (var m = 0; m < 600; m++){ for (var i = 0;tableElem.children.length-1; i++) { if (tableElem.children[i+1] != null) { var first = +(tableElem.children[i].innerHTML.replace(/\D+/g,"")) var second = +(tableElem.children[i+1].innerHTML.replace(/\D+/g,"")) if (first > second) { var cons = tableElem.children[i].innerHTML tableElem.children[i].innerHTML = tableElem.children[i+1].innerHTML tableElem.children[i+1].innerHTML = cons ; }; } else { break } }; } |
Цитата:
|
Часовой пояс GMT +3, время: 05:31. |