Uncaught TypeError: Cannot read property 'checked' of undefined [закрыт]

178
29 декабря 2021, 06:50
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 2 года назад.

Улучшить вопрос

Я новичок в JS, интересует такой вопрос при клика на кнопку button в консоли возникает ошибка Uncaught TypeError: Cannot read property 'checked' of undefined При этом выводится в консоль правльное значение value Вопрос: почему ошибка в консоли?

HTML

<div>
  <input class="myInput" id='radio-1' type="radio" value="1" name="radio">
  <label for="radio-1">Radio-1</label>
</div>
<div>
  <input class="myInput" id='radio-2' type="radio" value="2" name="radio" checked>
  <label for="radio-2">Radio-2</label>
</div>
<div>
  <input class="myInput" id='radio-3' type="radio" value="3" name="radio">
  <label for="radio-3">Radio-3</label>
</div>
<button>Push</button>

Javascript

document.querySelector('button').onclick = (event) => {
let radio = document.querySelectorAll('input[type="radio"]');
    for (let i = 0; i <= radio.length; i++) {
  if (radio[i].checked) {
            console.log(radio[i].value)
        }
    }
}

https://jsfiddle.net/p8ntL92y/4/

Answer 1

У вас не правильное условие в цикле используется. В JavaScript массивы нумеруются с 0, т.е. если у вас всего 3 элемента, то это будет от 0 до 2, но условие стоит i <= radio.length, т.е. но будет пытаться получить элемент по индексу 3, которого не существует. Нужно использовать i < radio.length.

READ ALSO
Способы работы со строками

Способы работы со строками

Написать функцию, которая принимает двузначное число и возвращает его в текстовом виде

181
можно ли дописать js

можно ли дописать js

Возможно ли сделать воспроизведение треков с разрешение json

199
Как убрать часть адреса из input?

Как убрать часть адреса из input?

Есть произвольных адрес в input1 (Россия, Московская область, Пушкино)

207