Проверка флажков

#javascript

#javascript

Вопрос:

Здравствуйте
у меня есть функция JS, которая говорит

 for(var i = 0; i < document.calDailyBlock.selFilCheckBox.length; i  )  
{  
  if(document.calDailyBlock.selFilCheckBox[i].checked)  
  {  
     filteredInitId  = document.calDailyBlock.selFilCheckBox[i].value   ",";  
     alert(filteredInitId);  
     isProjCheck = true;  
  }  
}  
document.calDailyBlock.filteredComId.value = filteredInitId;  
  

Когда на странице нет флажков, и я пытаюсь нажать на кнопку Filter, которая вызывает эту функцию, я получаю сообщение об ошибке «document.calDailyBlock.selFilCheckBox.length’ равно нулю или не является объектом»

Есть ли какая-нибудь простая вещь, которую я могу добавить в эту функцию?

Также кто-нибудь может мне помочь, как проверить, есть ли только один флажок на одной странице?

Заранее спасибо

Ответ №1:

Я думаю, вы полагаетесь на довольно неясную (неофициальную) функцию некоторых браузеров, которая позволяет вам получать элемент из документа, как если бы это был атрибут. Другими словами, вы собираетесь:

 document.calDailyBlock
  

Это поиск в документе переменной calDailyBlock . Вместо этого вам следует использовать стандартизированный getElementById :

 document.getElementById("calDailyBlock")
  

И используйте тот же подход для получения selFilCheckBox .

Это вернет значение null, если calDailyBlock или selFilCheckBox не найдены. Прежде чем вы начнете вызывать length их (что приводит к этой ошибке), вы должны проверить, получили ли вы обратно null, а затем (я полагаю) беззвучно завершите работу (ничего не делайте).

Ответ №2:

чтобы избежать ошибки, используйте if:

 if(document.calDailyBlock.selFilCheckBox) {
  for(var i = 0; i < document.calDailyBlock.selFilCheckBox.length; i  )  
  { … }
}