Добрый день.
Есть абстрактный пример кода:
var days = ['mon', 'thu', 'wen']
var nums = ['12', '24', '30']
for (var i=0; i<days.length; i++) {
var p = document.createElement('p')
var ind
p.innerHTML = days[i]
p.setAttribute('onclick', 'alert(nums[i])')
document.body.appendChild(p)
alert(nums[i])
}
Нужно, чтобы после создания всех
<p>
в , по нажатию на
<p>
выдавалось значение элемента из массива nums, индекс которого равен индексу
<p>
в массиве days.
Тут получается, что пока идет создание элементов, alert(nums[i]) выдает верные значения. Но как только код завершает выполнение, alert(nums[i]) выдает последний элемент массива, т.к. после завершения цикла, значение var i = 2.
Делал это через .forEach - все нормально работает. Но т.к. в .hta .forEach не поддерживается, нужно переписать это через цикл.
Почему при добавлении атрибута к элементу, в атрибут не записывается текущее значение i ? Т.е. получается, что в атрибуте значение onclick прописывается не как (alert[0]) - при первой итерации, например - а как (alert[i]).