Получить массив из checkboxов
Я тестер, в скрипте ни бум-бум, но оч надо )
Есть код: <div id="subscribers" class="title_editable_list edit_mode"> <a class="icon_edit" onclick="toggleSubscribersMode(this, '/spaces/12/messages/5'); return false;" <ul> <li> <input id="role_38" class="notify_role" type="checkbox" value="38" onclick="subscribeRole(this, '/spaces/12/messages/5/notifiers/38')" name="role_38"/> <a href="/users/1">You</a> </li> <li> <input id="role_39" class="notify_role" type="checkbox" value="39" onclick="subscribeRole(this, '/spaces/12/messages/5/notifiers/39')" name="role_39"/> <a href="/users/2">Aaron Aaron</a> </li> ...... Надо получить массив из айдишников только чекнутых чекбоксов СПАСИБО! |
Лучше взять какой-нибудь фреймворк с CSS-селекторами. Ну или можно так:
var inputs = document.getElementsByTagName("INPUT"); var result = []; for (var i in inputs) { if (inputs[i].type == "checkbox" && inputs[i].checked == true) { result[] = inputs[i].id; } } Топорно и медленно. |
Цитата:
|
Зачем for (var i in inputs) если можно for (var i=0;i<inputs.length;i++) ??
|
ZoNT,
Ну не знаю. На 13 символов короче. |
а как у нас со скоростью выполнения for in и просто for???
|
ZoNT,
Посчитайте. Возможно просто for выиграет ценные сотые доли секунды в предложенном выше примере. |
30 сотых секунды - это конкретный лаг! Так что надо по возможности оптимизировать большие циклы... Правда, если чекбоксов будет меньше сотни, то можно и подзабить...
|
Андрей Параничев, прокомментируйте, пожалуйста,
Цитата:
|
Спасибо!!!
Огромное!)))
|
Kolyaj,
Если подумать - то нет. Просто я думал что фреймворки делают такие выборки через xpath, что, наверное, быстрее, чем перебор всех элементов (особенно, если их много). |
Некоторые делают через xPath, в тех браузерах, которые его поддерживают. Другое дело, что, мне кажется, не выйдет тут через xPath, ибо аттрибуты != свойства.
|
Kolyaj,
Ну в примере автора темы было определённый класс у нужных checkbox'ов, имхо было бы быстрее сделать тот же: \\*[@class="notify_role"] Но взять именно "checked" сразу конечно не получится. |
Часовой пояс GMT +3, время: 23:18. |