У меня есть эта функция в моем коде Javascript, которая обновляет html-поля новыми значениями при каждом вызове. Проблема не может быть с самой функцией, потому что она прекрасно работает в каждом разделе, кроме одного. Вот функция JS:
function updateFields() {
document.getElementById('bf').innerHTML = bill.time[breakfast][bill.pointPartOfWeek];
document.getElementById('ln').innerHTML = bill.time[lunch][bill.pointPartOfWeek];
document.getElementById('dn').innerHTML = bill.time[dinner][bill.pointPartOfWeek];
document.getElementById('se').innerHTML = bill.time[special][bill.pointPartOfWeek];
document.getElementById('fdr').innerHTML = bill.time[full][bill.pointPartOfWeek];
document.getElementById('cost').innerHTML = bill.cost;
}
И он прекрасно работает в следующем случае:
<select onchange='if(this.selectedIndex == 0) {bill.unholiday();updateFields()} else { bill.holiday();updateFields()}' id='date' name='date'>
<option value='else'>Jan. 02 - Nov. 20</option>
<option value='christmas'>Nov. 20 - Jan. 01</option>
</select>
но в этом очень похожем коде последняя строка функции, похоже, не выполняется (она не обновляет поле стоимости, но обновляет все остальное)
<select onchange='if(this.selectedIndex == 0) {bill.pointPartOfWeek = 1;} else { bill.pointPartOfWeek = 2;}updateFields();alert(updateFields());' id='day' name='day'>
<option value='0'>Monday thru Thursday</option>
<option value='1'>Friday, Saturday, or Sunday</option>
</select>
<br />
Как ни странно, сама переменная общей стоимости обновляется, но поле, которое представляет переменную, нет. Если вы используете другой раздел страницы, который не изменяет значение общей стоимости, но снова вызывает функцию updateFields, тогда поле стоимости обновляется корректно. Это должно быть проблемой с вызванной функцией.
Примечание: мы знаем, что функция выполняется, потому что она выполняет 5 из 6 операций, которые она должна делать. Это странная проблема.
Редактировать: пастбина для всей страницы может быть полезным. Вот оно:
http://pastebin.com/f70d584d3