我正在尝试为每个div远程创建一个onclick(以节省打字时间)。这是window.onload函数;
window.onload = function() {
divel = document.getElementsByTagName('div');
for(var el in divel){
divel[el].onmouseover = function(){ this.style.textDecoration = "underline"; };
divel[el].onmouseout = function(){ this.style.textDecoration = "none"; };
divel[el].onclick = function(){ document.getElementById('game').src = "/games/" + this.name; };
}
}
每个div的名称都是“flyingsheep” - 这个值是由传统的< div name =“flyingsheep”>
当我点击div时,iframe“游戏”将我带到网页“/ games / undefined”
提前致谢。
(在Google Chrome和Fennec中测试过(我不知道最传统的浏览器))
答案 0 :(得分:12)
这会奏效。问题得到纠正。
只需使用:this.attributes["name"].value
window.onload = function() {
divel = document.getElementsByTagName('div');
for(var el in divel){
window.alert(divel[el].name);
divel[el].onmouseover = function(){ this.style.textDecoration = "underline"; };
divel[el].onmouseout = function(){ this.style.textDecoration = "none"; };
divel[el].onclick = function(){document.getElementById('game').src = this.attributes["name"].value;}
}
}
答案 1 :(得分:1)
很难确定问题是肯定的,因为我无法访问您的测试用例,因此我看不到任何错误或尝试调整它以使其工作,但有些问题是:< / p>
<div name="flyingsheep">
不是传统的,它是无效的。 div元素有no name
attribute。
如果JS在您尝试设置divel.length.onmouseover
时抛出错误,我不会感到惊讶 - 请勿在类似对象的数组上使用for ( foo in bar )
,使用普通计数器。
我最好的理论是你有更多div
个元素,然后是你关心的元素,而且点击其中一个元素(一个没有name属性),可能包含你想要的那个点击)激活JS功能。
答案 2 :(得分:1)
In jquery您可以改为使用:
$(this).attr("name");