一个完整新手的问题,是的,但我无法在任何地方找到答案。或者我的英语可能不足以给Google提出正确的要求。每个人都在建议一些框架,但我想知道如何在原生JavaScript中完成它。我已经尝试过这个代码和其他一些东西,没有效果。似乎我没有意识到一些基本的基本概念。任何帮助将不胜感激。
window.onload = function() {
var trCurrent
var main = document.getElementById('main');
var tr = main.getElementsByTagName('tr');
function hl() {
trCurrent.setAttribute('class', 'highlight');
};
for (var x = 0; x < tr.lenght; x++) {
trCurrent = tr[x];
trCurrent.addEventListener ('mousedown', hl, false);
}
};
答案 0 :(得分:1)
trCurrent
将this
更改为function h1
,因为trCurrent
指向最后定义的TR元素(trCurrent = tr[x]
为高x
1}})。.length
代替.lenght
。最终代码:
window.onload = function() {
var main = document.getElementById('main');
var tr = main.getElementsByTagName('tr');
function hl() {
this.setAttribute('class', 'highlight');
};
for (var x = 0; x < tr.length; x++) {
tr[x].addEventListener ('mousedown', hl, false);
}
};
如果要使用在循环期间可能发生变化的变量,则需要将主体包装在(匿名)函数中:
window.onload = function() {
var main = document.getElementById('main');
var tr = main.getElementsByTagName('tr');
for (var x = 0; x < tr.length; x++) {
(function(trCurrent){ //Anonymous wrapper, first argument: `trCurrent`
function hl() {
trCurrent.setAttribute('class', 'highlight');
};
trCurrent.addEventListener ('mousedown', hl, false);
})(tr[x]); //Passing a reference to `tr[x]`
}
};