var myimg;
myimg=document.createElement('img');
$('imgdiv').appendChild(myimg);
myimg.src='images/lampon.gif';
myimg.style.position='absolute';
myimg.style.top='100px';
myimg.style.left='200px';
if(document.addEventListener){
myimg.addEventListener('click', changestatus(this), false);
}
else{
myimg.attachEvent('onclick', changestatus(this));
}function changestatus(obj)
{
alert(obj.src);
}
我用上面的代码给一个div中动态添加一个img,并且设置它的onclick属性,本想点击的时候再让它执行,可以却
if(document.addEventListener){
myimg.addEventListener('click', changestatus(this), false);
}
else{
myimg.attachEvent('onclick', changestatus(this));
}
执行到这就执行了,而点击没有执行changestatus我又试了myimg.onclick=changestatus(this);
这个办法效果一样,请问这是怎么回事?谢谢
myimg=document.createElement('img');
$('imgdiv').appendChild(myimg);
myimg.src='images/lampon.gif';
myimg.style.position='absolute';
myimg.style.top='100px';
myimg.style.left='200px';
if(document.addEventListener){
myimg.addEventListener('click', changestatus(this), false);
}
else{
myimg.attachEvent('onclick', changestatus(this));
}function changestatus(obj)
{
alert(obj.src);
}
我用上面的代码给一个div中动态添加一个img,并且设置它的onclick属性,本想点击的时候再让它执行,可以却
if(document.addEventListener){
myimg.addEventListener('click', changestatus(this), false);
}
else{
myimg.attachEvent('onclick', changestatus(this));
}
执行到这就执行了,而点击没有执行changestatus我又试了myimg.onclick=changestatus(this);
这个办法效果一样,请问这是怎么回事?谢谢
解决方案 »
- jQuery怎么遍历表格,获取每一列的值,在线等...
- JS Firefox keyCode 问题
- js提示参数无效
- 高手指教,document.forms[0]这里指的是什么?初学菜鸟
- 利用JS滚动图片的问题 很奇怪 马上给分
- 怎样将字符串0xffffffff转化为16进制数
- 请问:下拉框的表单名要需要是变量该怎么写?
- 求xmL+javascript技术制作的像windows样式下拉的菜单
- 是不是先把所有要显示的内容先按上面的这种格式放入一个变量中保存下来,再分析XML的结构,最后显示?
- 替换回车符的问题
- 这个JQuery有什么问题
- 这相当于声明了window.a="aaa",为什么jquery还要jQuery = window.jQuery
<script>
var myimg;
myimg=document.createElement('img');
document.getElementById('imgdiv').appendChild(myimg);
myimg.src='images/lampon.gif';
myimg.style.position='absolute';
myimg.style.top='100px';
myimg.style.left='200px';
myimg.onclick=function(){
alert(myimg.src);
}();</script>
myimg.addEventListener('click', changestatus(this), false);
}
else{
myimg.attachEvent('onclick', changestatus(this));
}
执行到这就执行了,而点击没有执行changestatus 我又试了myimg.onclick=changestatus(this);
红色部分全部为函数调用语句,当然会执行了。
myimg.onclick=changestatus;
这样就不会了。
这个简单,也不用分浏览器的,LS都是正解,你那个样子写的时候就直接调用changestatus那个方法了,
也应该可以。
<script>
var myimg;
myimg=document.createElement('img');
document.getElementById('imgdiv').appendChild(myimg);
myimg.src='images/lampon.gif';
myimg.style.position='absolute';
myimg.style.top='100px';
myimg.style.left='200px';
myimg.onclick=function(){
alert(myimg.src);
}();
括号除掉,
无论是addEventListener, attachEvent,还是myimg.onclick=function(){...}其实都是要去做一件事情,那就是给myimg的onclick属性赋值,使onclick属性指向一个function。这里就不得不说一下Function比较trick的地方了。
function changestatus(obj) {alert(obj.src); }
着句话实际上是创造了一个变量changestatus,它指向了一个Function对象。而你写changestatus(this)表示调用这个function. 所以无论你写
myimg.addEventListener('click', changestatus(this), false);
还是myimg.attachEvent('onclick', changestatus(this)); 都是把changestatus(this)执行的结果赋值给onclick.不信你可以这么写:
myimg.attachEvent('onclick', changestatus(this));
function changestatus(obj){
return function(){alert(myimg.src)};
}
,就是你要的结果了。
而你这么写myimg.attachEvent('onclick', changestatus);
function changestatus(obj){
alert(event.srcElement.src);
}
也是可以的。因为这样写的意思是把changestatus赋值给'onclick'
你写myimg.onclick = function(){alert()}也是可以的,因为这样写则构造了一个黎民函数,并且赋值给了onclick.
问题是传参..
myimg.addEventListener('click', function(){changestatus(this)}, false);
可以这样解决
myimg.attachEvent('onclick', changestatus(this)); 其实是把changestatus(this)的执行结果给onclick属性,就相当于
var temp = changestatus(this);
myimg.attachEvent('onclick', temp);
不知道这么说可否。
而且我回贴反复强调的就是onclick的本质问题。 难道不是楼主想要听的吗?
用10楼的方法是最直观可以的.其中的区别希望lz可以体会一下顺便一下, 等会搬个板凳看 sunxing007 和 jack420124 对掐 -_-