У меня возникла странная проблема с Javascript. То, что я получил, представляет собой строку определенного формата, из которой я попытаюсь создать таблицу.Динамическое добавление обработчика событий в Javascript
В таблице будет иметь только ячейки для каждой строки и формат строки является:
Содержимое должно отображаться для каждой ячейки (строки)
@
параметра, который будет передан в обработчик onmouseover
событие, которое вызывается, когда пользователь наводит курсор на отображаемый текст.
Код JS:
// the string of format
var stringProof = document.getElementById("stringProof").value;
var arrayOfProof = stringProof.split("#");
// find the table
var table = document.getElementById("proofTable");
// remove what's within
table.innerHTML = "";
for(var i = currentIndex*4;i < end;i++)
{
// iterative create the text, span, cell and row
var currentStepProof = arrayOfProof[i];
var elementsInCurrentStepProof = currentStepProof.split("@");
var tr = document.createElement("tr");
var td = document.createElement("td");
var span = document.createElement("span");
span.onmouseover = function() {alert(elementsInCurrentStepProof[1]);};
var text = document.createTextNode(elementsInCurrentStepProof[0]);
span.appendChild(text);
td.appendChild(span);
tr.appendChild(td);
table.appendChild(tr);
}
Проблема заключается в том, что не имеет значения, какие строки функция onmouseover
срабатывает, то это будет только предупредит параметр последней строки, что означает параметр onmouseover
функции перезаписи последней строки в что было передано в функции onmouseover
предыдущей строки.
Любые мысли? Спасибо большое! ~~
http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – georg