我用以下代码完全修改了这个问题,以显示我收到的示例错误。
Javascript.js文件
var yourName = prompt("What is your name?");
if (yourName != null){
document.getElementById("sayHello").innerHTML = "Hello" + yourName;}
else {
alert("Please enter a name next time!");}
的index.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script type="text/javascript" src="Javascript.js"></script>
</head>
<body>
<p id="sayHello">hello</p>
</body>
</html>
上面的代码会提示我询问它将收到的名称的消息,但是使用'yourName'变量,document.getElement行将不会运行,因为html代码
仍然存在和'你好'一样。我试图调试这个以查看它为什么不会运行文档行代码,但是当我点击文档行上的断点时,我收到一条消息,'断点当前不会被命中。此文档未加载任何符号。它指的是什么符号?我正在使用Microsoft Visual Studio。
答案 0 :(得分:1)
回答你的问题,为什么它在html(在评论中)放置很晚才起作用:
脚本需要在设置DOM时运行,以便它可以找到元素。
目前,在可以访问html之前,脚本正在运行,因此getElementById
将无法找到任何内容。
最简单的修正是将脚本放在<body>
标记的末尾(在它引用的html之后;就像在截图中所做的那样)。
另一个选择是让脚本仅在DOM加载完成后运行:pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it