[code="html"]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
[/code]
不论点击哪个超链接alert(obj.innerText);获取到的值总是最后一个的值“789明细信息”。求解决方法,使能获取到相对应超链接的值。
1、var obj=null;
outer:for(var i=0;i<objs.length;i++){
obj=objs[i];
obj.attachEvent("onclick",function (){aaa(obj);});
}}
aaa(obj);//obj=objs数组最后一个,所以这样肯定不对;
2、attachEvent不支持Mozilla系列,需要addEventListener
[url]http://www.cnblogs.com/poorpan/archive/2011/08/10/2134039.html[/url]
3、我们通过event传递,然后通过如下代码拿到目标对象
var src = event.srcElement;
if(!src) {
src = event.target;
}
[url]http://codex.wordpress.org.cn/HTML%E5%85%B3%E4%BA%8EEvent%E5%AF%B9%E8%B1%A1[/url]
4、可执行代码:
[code="java"]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
123明细信息 |
456明细信息 |
789明细信息 |
ss |
[/code]
function initHrefColor(objs){
var objs=document.getElementsByTagName("a");
for(var i=0;i<objs.length;i++){
var obj = objs[i];
obj.onclick = function(){
aaa(this);
}
}
}
initHrefColor();
function aaa(obj){
alert(obj.innerText);
}
你没有搞清楚, 推荐你去看一下, 变量作用域是怎么样工作的
搜索了一篇文章:http://www.cnblogs.com/terryglp/articles/1776695.html
var obj=null;
outer:for(var i=0;i<objs.length;i++){
obj=objs[i];
obj.attachEvent("onclick",function (){aaa(obj);});
}}
这里function (){aaa(obj);}, 引用了obj这个变量, 每次循环, 其实obj的指向都在变,
循环结果, obj就指向objs数组里最后一个元素了
这时, 在点击触发aaa(obj), alert的东西就会一直是最后一个a
推荐babydeed的方法,
这是常见的JS中的作用域问题,使用闭包就可以解决,另外jinnianshilongnian 指出的浏览器兼容问题也需要注意一下。还有,在js编写规范里,提到将js写到head里是最好的,
但是你这里var objs=document.getElementsByTagName("a"); 如果写在head里肯定拿不到,所以要加上window.onload去执行。或者引用jquery的$(function(){}),这两个的区别你可以百度一下,另外推荐一个网址,帮助你大体上了解一下js
http://bonsaiden.github.com/JavaScript-Garden/zh/
[code="java"] function initHrefColor(objs) {
var objs = document.getElementsByTagName("a");
var obj = null;
for (var i = 0; i < objs.length; i++) {
(function (e) {
e.attachEvent("onclick", function () { aaa(e); });
})(objs[i])
}
}
function aaa(obj) {
alert(obj.innerText);
}
initHrefColor();
[/code]
第一次回答问题希望对你有帮助