2015-03-26 7 views
0

Теперь я столкнулся с проблемой использования цикла в моем проекте. В настоящее время у меня есть несколько флажков, у которых есть свой собственный уникальный пример id: myCheckbox, myCheckBox1, myCheckBox2, ....Использование цикла для заполнения массива в document.getelementbyid

Я не хочу хардкор номера за myCheckBox, поэтому я пытаюсь использовать цикл for сделай это. Как-то я не знаю, почему мой цикл for работает, если я его жестко кодирует, как document.getelementbyid ('mycheckbox1'). Checked == true, тогда он работает.

Все, что я пропустил в своем коде? Прошу вас, потому что я все еще новичок в веб-программировании. Благодаря

Вот мой код:

<script type='text/javascript'> 

     function checkDisabled(yourSubmitButton){ 

      for(var i=0;i<10;i++){ 
       if(document.getElementById("myCheckBox"+i).checked==true){ 
        yourSubmitButton.disabled = false; 
        return; 
       } 
      } 


      // If we have made it here, disable it 
      yourSubmitButton.disabled = true; 

      }; 
      </script> 
+1

Если 'getElementById' не может найти определенный элемент, он вернет' null'. Вы не можете проверить '.checked' на нулевом объекте ... так что он сработает. Вам нужно проверить, возвращает ли 'getElementById' допустимый объект или нет. – freefaller

+0

Код в порядке, насколько это возможно, хотя есть вопрос о' myCheckbox' и 'myCheckbox0' (см. Мой ответ). Нам нужно увидеть ваш HTML. Кроме того, вы ** никогда не нуждаетесь в '== true' в условиях. И вам нужно **, чтобы иметь 10 флажков для этого кода, чтобы не выкидывать ошибку. –

+1

В общем, ваш ** лучший вариант ** для определения того, как это происходит, - использовать полнофункциональный отладчик, встроенный в ваш браузер. Нажмите F12 или Ctrl + Shift + I или (на Mac) Cmd + Shift + I или загляните в меню, и вы найдете отладчик, с помощью которого вы можете шаг за шагом вывести инструкцию за раз, посмотрите на значения переменные, см. ошибки, если есть ошибки, которые происходят ... Нет необходимости спотыкаться в темноте; у вашего браузера есть одна черта факела, которую вы можете использовать. –

ответ

2

Stab в темноте: Вы сказали, что в вашем вопросе, что ваши флажков называются myCheckbox, myCheckbox1, myCheckBox2, и такие, но ваш цикл ищет myCheckbox0 , а не myCheckbox, на первой итерации, которая заставила бы это сделать исключение, когда вы попытаетесь прочитать свойство checkednull.

+0

Ладно спасибо! Я решил это –

Смежные вопросы