Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.08.2010, 18:09
Аспирант
Отправить личное сообщение для MikhailGirshberg Посмотреть профиль Найти все сообщения от MikhailGirshberg
 
Регистрация: 27.07.2010
Сообщений: 72

кроссбраузерно присвоить значения
Есть переключатель чекбоксов. Их МНОГО (десятки тыщ). Но зато других инпутов в ноде не бывает ;-?
function toggleAllChecked(checked, node_id){
  var node = document.getElementById(node_id)
  var cbx = node.getElementsByTagName("INPUT");
  for(var i = 1; i < cbx.length; i++){
    cbx[i].checked = checked;
  }
}

Из "великолепной пятёрки" почти все браузеры справляются адекватно.

IE8 и Safari тормозят не по-детски. Как с этом побороться?
Ответить с цитированием
  #2 (permalink)  
Старый 16.08.2010, 18:14
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

document.querySelectorAll('#' + node_id + ' input:checkbox');
Ответить с цитированием
  #3 (permalink)  
Старый 16.08.2010, 18:24
Аспирант
Отправить личное сообщение для MikhailGirshberg Посмотреть профиль Найти все сообщения от MikhailGirshberg
 
Регистрация: 27.07.2010
Сообщений: 72

Сообщение от exec Посмотреть сообщение
document.querySelectorAll('#' + node_id + ' input:checkbox');
Не работает. Так ругается FF:
Ошибка: uncaught exception: [Exception... "An invalid or illegal string was specified" code: "12" nsresult: "0x8053000c (NS_ERROR_DOM_SYNTAX_ERR)" location: "http://192.168.0.152/tracking/javascript/eventsproc.js Line: 179"]


Я что-то ступил?
Ответить с цитированием
  #4 (permalink)  
Старый 16.08.2010, 18:27
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Упс, в querySelectorAll нет ведь такого селектора.
Пробуйте так:

document.querySelectorAll('#' + node_id + ' input[type=checkbox]');


document.querySelectorAll('#' + node_id + ' input');
Ответить с цитированием
  #5 (permalink)  
Старый 17.08.2010, 00:07
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

Не совсем понимаю логику exec-а...
Лично я бы поработал бы над оптимизацией цикла...
Ответить с цитированием
  #6 (permalink)  
Старый 17.08.2010, 02:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

длину массива cbx.length сохраните в отдельной переменной это должно дать выигрыш по времени
function toggleAllChecked(checked, node_id){
  var node = document.getElementById(node_id)
  var cbx = node.getElementsByTagName("INPUT");
  var length = cbx.length;
  for(var i = 0; i < length; i++){
    cbx[i].checked = checked;
  }
}
Ответить с цитированием
  #7 (permalink)  
Старый 17.08.2010, 07:50
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

exec,
тормозит цикл, а не выборка, а вы просто выборку усложнить предлагаете.
Ответить с цитированием
  #8 (permalink)  
Старый 17.08.2010, 09:27
Аспирант
Отправить личное сообщение для MikhailGirshberg Посмотреть профиль Найти все сообщения от MikhailGirshberg
 
Регистрация: 27.07.2010
Сообщений: 72

Сообщение от рони Посмотреть сообщение
длину массива cbx.length сохраните в отдельной переменной это должно дать выигрыш по времени
Сообщение от Kolyaj Посмотреть сообщение
exec,
тормозит цикл, а не выборка, а вы просто выборку усложнить предлагаете.
Cпасибо, коллеги, стало получше.
Результат, однако, не достигнут: IE8 и Safari отрабатывают раза в 3 медленнее чем FF, Opera и GC. К тому же, Safari задаёт дурацкие вопросы про медленный скрипт.
Ответить с цитированием
  #9 (permalink)  
Старый 17.08.2010, 09:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от MikhailGirshberg
IE8 и Safari отрабатывают раза в 3 медленнее чем FF, Opera и GC. К тому же, Safari задаёт дурацкие вопросы про медленный скрипт.
Они как бы намекают, что десятки тыщ чекбоксов на странице не то, что плохо, а просто смысла не имеют.
Ответить с цитированием
  #10 (permalink)  
Старый 17.08.2010, 09:41
Новичок
Отправить личное сообщение для inGray Посмотреть профиль Найти все сообщения от inGray
 
Регистрация: 03.08.2010
Сообщений: 230

Просто интересно, для каких операций могут потребоваться "десятки тыщ" чекбоксов
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разные значения clientWidth в ie и ff SILVERSPEED Events/DOM/Window 6 20.04.2010 01:11
Присвоение высоте дива значения window.innerHeight Capitano Элементы интерфейса 7 26.12.2009 15:54
Какой способ задания значения переменной в javascript коде корректен user_robot Общие вопросы Javascript 3 08.12.2009 17:25
как тегу option с определенным value присвоить selected kichSman Общие вопросы Javascript 2 24.10.2009 03:14
как отобразить в окне значения счетчика во время выполнения цикла FOR Алекс97 Общие вопросы Javascript 5 06.09.2008 10:36