Javascript 在正文中有效,但在标题中无效

标签 javascript html

<分区>

据我所知,javascript 的首选格式位于标题末尾的单独文件中。我编写了一个简单的屏幕,它按时间间隔递增 indx,如果按下 Previous 按钮则反转。如果我在正文末尾包含脚本,它工作正常,但如果我在标题末尾包含按钮则无效。我在这里错过了什么吗?有人可以解释一下吗?

var buttons = document.getElementsByTagName("button");
for (var i = 0; i < buttons.length; i++) {
buttons[i].onclick = handleButtonPress;
}

var del = 5000;  /* time delay in milli seconds */
var indx = 0;
var direct = 1;
var intervalID = window.setInterval(proceed, del);

function proceed() {
	indx += direct;
	if (indx <= 0){
	indx = 0;
	direct = direct * -1;
	};
	msg = 'indx = ' + indx + ' direct = ' + direct;
	document.getElementById("msg").innerHTML = msg;
}

function test() {
	alert('this is a test')
}

function handleButtonPress(e) {
if (e.target.id == "next") {
direct = 1;
}
else if (e.target.id == "prev") {
direct = -1
}
}

function displayMsg(msg) {
document.getElementById("msg").innerHTML = msg;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Example Timeout + Buttons</title>

<!-- <script src="test.js"></script> Does not work here!! -->

</head>
<body>
<p id='msg'></p>
<p>
At start<br>
<button id="next">Next</button>
<button id="prev">Previous</button>
</p>

<!-- Script works here!! -->
<script src="test.js"></script>

</body>
</html>

最佳答案

这不是问题,而是在 DOM 元素存在之前尝试使用或引用它们的结果:

  • 在 HTML 底部加载 js 时:
    • DOM 已经加载
    • 你可以随意操纵它。
  • 将 js 加载到 HEAD 时:
    • DOM 尚未加载
    • 您必须让页面仅在正文加载后才执行 javascript:
    • 使用 jQuery 的 $()
    • 使用 BODY DOM 元素的 onload 事件。

关于Javascript 在正文中有效,但在标题中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34213116/

相关文章:

javascript - &lt;iframe&gt; 在设计模式下支持 javascript 吗?

javascript - 如何测试涉及单击 html 文件输入元素的 javascript?

javascript - OpenLayers - 如果从文件系统和 Web 服务器查看, map 缩放比例不同

javascript - Xhr 多个请求

html - block 中具有特定类的第一个和最后一个元素的 CSS 选择器

javascript - 倒数计时器在 JavaScript 中不起作用

javascript - 在可观察订阅上运行函数

javascript - 相互连接的曲线

javascript - "Cannot read property ' findDOMNode ' of undefined"使用 React-widgets 时

html - 如何使用任何 owl.carousel?