javascript - 为什么点击按钮要放在函数之前才能执行?
迷茫
迷茫 2017-04-10 17:18:44
[JavaScript讨论组]
<script>
var x = document.getElementById("demo");
x.addEventListener("click", myFunction);

function myFunction() 
{
    alert ("Hello World!")
}


</script>

<button id="demo">点我</button>
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(6)
巴扎黑

因为html文档时从上往下执行的,按钮如果在script下面,var x = document.getElementById("demo");执行完了xundefined,再执行x.addEventListener("click", myFunction);就报错了。

PHP中文网

看到这个var x = document.getElementById("demo");没有
如果按钮在这个的后面就会导致x取不到这个对象了,所以就不能添加事件了;
总的来说这是因为代码是自上而下加载

天蓬老师

并非是要放在函数之前,照你的写法,script标签优先于button标签解析,
你可以加一行代码在var x下面,console.log(x),会返回一个null。
原因是js代码执行的时候button并未被浏览器解析到。你不能给给一个null
绑定事件监听。所以这也是为什么一般建议html里面把js引入放在页面最末尾的原因

怪我咯

js代码放到load里就不用管顺序了。

PHP中文网

你可以去看看页面js加载相关知识。
如果button在js下面的话,document.getElementById("demo")拿不到demo元素,所以也没法注册事件。

怪我咯

因为js的变量提升
大概的声明顺序 是

function myFunction(){}
var x ;
x=document.getElementById("demo")

具体自行百度

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号