与 HTML 中的按钮关联的功能 - 未按预期工作
Associated functionality with a button in HTML - Not working as intended
下面是我的按钮代码和一个在单击该按钮时发出警报的函数。当我加载页面时,它会发出警报,但在我单击按钮时不会发出警报。这段代码有什么问题?
<html>
<head>
<script type="text/javascript">
b1 = document.getElementById("b0");
b1.onclick = message();
function message() {
alert("You clicked a button");
}
</script>
</head>
<body>
<h1>Checking button functionality!</h1>
<button id="b0">Click me</button>
</body>
</html>
您的脚本可能会在b1
上引发未定义的错误,因为在您搜索 id 为 b0
的元素时未加载 DOM。
您需要更新脚本以在load
事件中查询 DOM,或者将其移动到您获得的元素之后。通常的做法是将脚本放在结束</body>
标记之前。
例如
<head>
<script>
function message() {
alert("You clicked a button");
};
window.onload = function() {
b1 = document.getElementById('b0');
b1.onclick = message;
};
</script>
</head>
...
另请注意,我省略了onclick
作业中的括号。您希望将函数分配给事件,而不是调用函数然后分配它。
您需要
将脚本移动到按钮下方(最好在</body>
之前)并更改
b1.onclick = message();
自
b1.onclick = message;
否则,您不分配函数,而是返回值。
甚至更好:(见这里)
b1.addEventListener('click', message);
您已经在执行函数并将其返回值分配给 onclick 事件而不是函数引用本身。去掉括号: b1.onclick = message;
此外,您必须将脚本块移动到标记下方,否则当您尝试向其添加单击处理程序时,该按钮将不存在。
相关文章:
- JavaScript打印功能使日历停止工作
- jQuery滚动功能只工作一次
- 为什么ng控制器不调用或工作或功能不工作
- 点击功能没有'ajax调用动态元素(Backbone)后无法工作
- AngularJs中的自动完成功能无法正常工作
- 为什么获胜'我的自定义功能工作
- 角度控制器功能赢得'不按指令工作
- 当我用鼠标左键点击时,让这个功能工作起来
- 重新启动游戏jQuery功能不工作
- 滚动功能不工作
- 角度控制器功能不;在指令内部调用时,似乎无法始终如一地工作
- JS不工作:Sublime 3编辑器-Var main=函数()-=不是“”;激活“;(功能新手)
- 单击水平滚动库中的图像以居中显示无法工作的功能
- MVC 分部视图中的 JQuery UI 自动完成功能只能工作一次
- 为什么本机浏览器排序功能的工作速度比快速排序慢
- 正在尝试获取此代码'在wordpress页面中工作的功能
- JavaScript:如何适应Firefox和/或Chrome的工作功能(IE)
- JQuery不工作.(功能)
- 无工作功能,具有ng-repeat
- 在角度方向don't控制器的工作功能