为了账号安全,请及时绑定邮箱和手机立即绑定

这里为什么不行?

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script type="text/javascript">



window.onload=function(){

var bt=document.createElement("input");

bt.type="button";

bt.value="按钮";

bt.id="btn";

document.body.appendChild(bt);

bt.style.width="160px";

bt.style.height="60px";

}

function asd(){

alert(this.value);

}

var a=document.getElementById("btn");

a.addEventListener("click",asd(),false);

</script>

</head>

<body>

</body>

</html>

如题,加粗有底线的那段无效。。。不知为何。

http://www.imooc.com/video/2134

正在回答

4 回答

补充:代码执行顺序,从上到下,如果使用window.onload方法,window.onload方法最后执行

0 回复 有任何疑惑可以回复我~
#1

飞天意大利面神兽 提问者

原来如此,感谢
2016-05-23 回复 有任何疑惑可以回复我~

首先你要明白代码代码是从上倒下执行的,但是window.onload方法的意思就是当HTML结构加载完成后执行里面的代码,因为你的(

var a=document.getElementById("btn");

a.addEventListener("click",asd(),false);


没有加在window.onload方法里面,所以被先执行了,但是你这里没有input标签,所以无法添加单击事件。

简而言之,就是你先添加单击事件,再创建DOM节点,所以无法添加事件。

解决问题请采纳,谢谢

2 回复 有任何疑惑可以回复我~
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
window.onload=function(){
var bt=document.createElement("input");
bt.type="button";
bt.value="按钮";
bt.id="btn";
document.body.appendChild(bt);
bt.style.width="160px";
bt.style.height="60px";
//请把点击事件加载window.onload里面
var a=document.getElementById("btn");
a.addEventListener("click",asd,false);
}
function asd(){
alert(this.value);
}
</script>
</head>
<body>
</body>
</html>

解决问题请采纳,谢谢

1 回复 有任何疑惑可以回复我~
#1

飞天意大利面神兽 提问者

请问为什么要加进去呢?
2016-05-21 回复 有任何疑惑可以回复我~

asd后面括号去掉,因为它绑定的是函数名

0 回复 有任何疑惑可以回复我~
#1

飞天意大利面神兽 提问者

刚跑去试了,没用~
2016-05-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
DOM事件探秘
  • 参与学习       99544    人
  • 解答问题       1197    个

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

进入课程

这里为什么不行?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信