DOM onmouseover не появляется - PullRequest
       0

DOM onmouseover не появляется

0 голосов
/ 26 октября 2011

Я пытаюсь вставить onmouseover при создании новых строк в моей таблице, но он не отображается.Я что-то упустил?

    var row = document.createElement("TR");
    row.id = i;
    row.onmouseover = hover(i);
    var td1 = document.createElement("TD");
    row.appendChild(td1);
    tbody.appendChild(row);

Переменная 'i' - это текущее число в цикле.Идентификатор строки отображается нормально, но не onmouseover.

Ответы [ 3 ]

3 голосов
/ 26 октября 2011

Используйте анонимную функцию, чтобы создать замыкание для значения i, и убедитесь, что вы устанавливаете функцию на onmouseover, а не результат вызова функции:

var row = document.createElement("TR");
(function (i) {
    row.onmouseover = function () { hover(i) };
})(row.id);
var td1 = document.createElement("TD");
row.appendChild(td1);
tbody.appendChild(row);

<ч /> Если вы внимательно посмотрите на ваш код, то, похоже, вы на самом деле не устанавливаете атрибут id элемента TR. Однако вы можете полностью избежать этого и использовать this контекст внутри функции наведения:

var row = document.createElement("TR");
row.onmouseover = hover;
var td1 = document.createElement("TD");
row.appendChild(td1);
tbody.appendChild(row);
function hover() { 
    alert(this.rowIndex);  // <-- `this` refers to the row element
}
1 голос
/ 26 октября 2011

Вы присваиваете результат функции событию.

Должно быть что-то вроде

row.onmouseover=function(){hover(this);}

И это лучше использовать, так как у вас есть объект DOM и вам не нужно ничего искать.

function hover( row ){
     row.style.color = "red";
}

Если вы все еще не знаете, что делать, вы должны изменить свой идентификатор, чтобы он действовал.Идентификаторы не могут начинаться с цифры.

var row = document.createElement("TR");
row.id = "row_i";
row.onmouseover = function(){ hover(this.id); }
var td1 = document.createElement("TD");
row.appendChild(td1);
tbody.appendChild(row);
0 голосов
/ 26 октября 2011

Может быть попробовать:

row.onmouseover = function() { hover(i); };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...