没错就是传说中的必包
<html>
<body>
<div class="div1">
this is first div
</div>
<div class="div2">
this is second div
</div>
<div class="div3">
this is third div
</div>
</body>
</html>
<script>
var allDiv = document.getElementsByTagName("div");
for(var a = 0;a < allDiv.length; a++){
var div = allDiv[a];
div.onclick = function(){
alert(this.innerHTML);
}
}
</script>
<html>
<body>
<div class="div1">
this is first div
</div>
<div class="div2">
this is second div
</div>
<div class="div3">
this is third div
</div>
</body>
</html>
<script>
var allDiv = document.getElementsByTagName("div");
for(var a = 0;a < allDiv.length; a++){
var div = allDiv[a];
div.onclick = function(){
alert(this.innerHTML);
}
}
</script>
解决方案 »
- Firefox3,IE6,IE7,IE8上传图片预览
- [求助]在子函数中获取事件对象出错
- 问个很弱智的问题
- JSP做的check登陆的程序出错,帮忙修改下,感谢!
- 急,最近在用ewebeditor进行开发,怎么可以限制iframe输入框里的字符个数
- 关于元素对像的获取
- 如何去除一个xml node的namespace
- 关于window.createpopup问题,望高手赐教
- 救命啊,高手们!!!!
- WEB前端滑动组件jmSlip
- javascript问题
- *************************************function now(){return +new Date;)?????
onclick="alert(div.innerHTML);"而div最后保存的是allDiv[2]
我试过你说的方法了,已经可以了.
想问一下,你说的代码中,this指的是什么?
是事件的那个e么?
为什么this可以代表触发事件的元素?
http://blog.csdn.net/hzrui/archive/2009/02/27/3941137.aspx下面这个可以解决你this的疑问:
http://blog.csdn.net/hzrui/archive/2009/03/03/3951289.aspx
也就是说任何一个变量或函数都是有主的,不属于任何对象的变量或函数不存在;其次JS是一个解释
性语言,没一段程序在执行之前需要由解释程序预处理。预处理之后源代码会被转化成解释机可识别
的内部代码,这些代码的逻辑功能和你的代码是等价的,用来描述你的逻辑。在代码预处理之后,解释
程序还会给没一函数分配一部分可用的内存空间作为函数的执行环境也就是必包。程序=算法+数据.
预处理代码描述逻辑,必包存放数据,有了这两者我们的程序就可以运行了。 好了有了上面的铺垫,我们解释问题就比较容易了。由于JS解释后会被分解成内部的算法描述符+
必包。解释规则是一样的,所以同一函数无论什么时候算法描述符都是一样的,但必包就不一定了,不同
的环境下他的值是不一样的。之所以this可以代表触发事件的元素,就是因为在当时的必包this就指向
触发时间的元素。你可以试验下下面的代码,看看那个this有什么不一样
<html>
<body>
<div id="div1" class="div1">
this is first div
</div>
<div id="div2" class="div2">
this is second div
</div>
<div class="div3">
this is third div
</div>
<input id="btn1" type="button" value="ceshi" onClick="alert(this.onclick);handleClk.apply(this,[])"/>
</body>
</html>
<script>
function $(sId){
return document.getElementById(sId);
}var allDiv = document.getElementsByTagName("div");
for(var a = 0;a < allDiv.length;a++){
var div = allDiv[a];
div.onclick=handleClk;
}var value="window value";
function handleClk(){
alert(this);//这个this的值根据环境的不同会有所变化
alert(this.innerHTML||this.value);
}handleClk();
</script> 小时候经常听大人们将那些部分环境照人学舌的笑话,程序也一样,算法是死的,环境是活的,分析
程序不能按死标准
看了你们的回复我明白一点了,谢谢你们.