2 Вопрос: Невозможно прочитать свойство, отмеченное как неопределенное - Javascript

вопрос создан в Wed, May 8, 2019 12:00 AM
  

Консоль говорит: «Невозможно прочитать свойство, отмеченное как« неопределенное »)

У меня есть переключатели, которые я использую для анкеты и, основываясь на ответах людей, дает им оценку, и в конце я должен вычислить все оценки вместе и дать им конкретное сообщение в зависимости от диапазона который там балл попадает в.

Я поэкспериментировал с проверкой скобок, чтобы убедиться, что произошла ошибка, и проверил, правильно ли помечены переключатели.

//javascript function that is having the issue

function calcSecThree(){

    var total = 0;
        for(var i=1; i <= 2; i++) {
            for(var x = 0; x < 5; x++) {                    
                if(document.getElementsByName('3.' + i)[x].checked){
                    total += x + 1;
                        }
                }
            }
      alert("total is "+total);
};

Я ожидаю появления предупреждения с отображаемым итогом. Он работает для двух предыдущих разделов, но по какой-то причине я получаю ошибки в этом разделе

Предупреждение не появляется, и когда я проверяю консоль, я получаю сообщение об ошибке -

  

"Невозможно прочитать свойство 'флажок' из неопределенного"

    
1
  1. document.getElementsByName('3.' + i)[x] не определен для одной из записей.
    2019-05-08 16: 23: 45Z
  2. Для отладки попробуйте войти в консоль всех document.getElementsByName('3.' + i) вхождений.
    2019-05-08 16: 43: 07Z
2 ответа                              2                         

вы должны поставить проверку, чтобы увидеть, существует ли элемент, а затем выполнить следующее условие if, чтобы избежать ошибки

function calcSecThree() {

  var total = 0;
  for (var i = 1; i <= 2; i++) {
    for (var x = 0; x < 5; x++) {
      if (document.getElementsByName('3.' + i)[x]) {
        if (document.getElementsByName('3.' + i)[x].checked) {
          total += x + 1;
        }
      }
    }
  }
  alert("total is " + total);
};
    
1
2019-05-08 16: 24: 24Z

Я думаю, что этот элемент не существует в DOM.

document.getElementsByName ('3.' + i) [x] .checked

Пожалуйста, проверьте значение этого элемента

    
0
2019-05-08 16: 50: 43Z
источник размещен Вот