Не работает простой javascript в Chrome на Android 4.2 / 4.3

168
08 октября 2018, 23:20

Есть форма (тест), содержащая несколько вопросов, на которые надо давать ответы путем выбора от 0 до 5 баллов. Сделано радиокнопками:

<input type="radio" name="question_0_1" id="answer_0_1_0" value="0">
<input type="radio" name="question_0_1" id="answer_0_1_1" value="1">
...
<input type="radio" name="question_0_1" id="answer_0_1_5" value="5">

Есть функция, которая пробегается по всем вопросам, дергает у каждого из них значение ответа и суммирует в переменную scores:

var temp = 0;
var scores = 0;
function doTest() {
  for (i=0; i < test.length; i++) {
    temp=document.getElementById('test_form')["question_"+i].value;
    if(temp !="") {scores+=parseInt(temp);}
    else {/* тут ругань валидатора */}
  }
}

На компьютере все нормально. На более-менее современном планшете тоже. А вот на смартфонах постарше (андроид 4.3, Chrome 28 и штатный браузер андроида 4.2 (юзер-агент: Lenovo-A880/S100 Linux/3.4.5 Android/4.2 Release/08.07.2013 Browser/AppleWebkit 534.30 Profile/Configuration;)) в scores складывается NaN. Примитивный дебаг показал, что в переменную temp в цикле отдается undefined.

Что за фокусы?

Answer 1

В общем, проблема оказалась в том, что в старом браузере получение значения у набора радиокнопок, имеющих общее имя, по этому имени не работает: вместо нормального RadioNodeList старый браузер возвращает NodeList, у которого нет свойства value. Полифилл для этого дела решил проблему: https://gist.github.com/Raynos/1647489

READ ALSO
Javascript событие для всех ссылок

Javascript событие для всех ссылок

Как заменить jquery код на javascript?

179
Нужна помощь по Redux

Нужна помощь по Redux

Вот есть допустим начальный state

158
Почему значение undefined?

Почему значение undefined?

После всех элементов в html файле располагаю скриптВ объекте page есть объект obj со значением $("

194
Не инкрементируется значение i

Не инкрементируется значение i

Возник вопрос в коде, а именно не инкрементируется значение this_i

180