Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сортировка элементов по значению. HElp (https://javascript.ru/forum/misc/57365-sortirovka-ehlementov-po-znacheniyu-help.html)

Bogdan.bro 31.07.2015 14:37

Сортировка элементов по значению. 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:

Как я понимаю надо найти литерал и исключить его из выражения сортировки...

Bogdan.bro 31.07.2015 15:32

Кое что проеснил ...
 
Так как возможна 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 .... как это решить?

ksa 31.07.2015 15:46

Цитата:

Сообщение от Bogdan.bro
Все хорошо до тех пор, пока элементы из обьекта с параметром line_db[i].name не стоновятся смешанного типа .... (Т112).
Я думал что можно попробовать решить эту проблему с помошью, рег. выражения. Но как не могу уже 4 день понять ...

Что тебе нужно получить с того Т112?

Bogdan.bro 31.07.2015 16:28

Цитата:

Сообщение от ksa (Сообщение 382282)
Что тебе нужно получить с того Т112?

То что бы он сортировался по номеру) а именно отсеивал T ... Но я вроде как решил это сам ... будет ли это верно?

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
}
};
}

ksa 03.08.2015 13:46

Цитата:

Сообщение от Bogdan.bro
будет ли это верно?

Если получил нужные числа - значит верно. ;)


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