<html>
<head>
</head>
<body>
<script>
function toD(angle) {
return angle * (180 / Math.PI);
}
var a = document.getElementById('test').innerHTML = toD(15);
</script>
<p id='test'> </p>
</body>
</html>
抱歉,我不确定我是否遗漏了什么,但为什么这段代码没有运行?提前谢谢,对不起,如果这是一个愚蠢的问题!
答案 0 :(得分:9)
在您的脚本var a = document.getElementById('test').innerHTML = toD(15);
中运行时<p id='test'> </p>
不存在。
将脚本放在<p id='test'> </p>
之后,或将整个脚本包装在自己的函数中并将其分配给onload
,以便它仅在<p id='test'> </p>
之后运行,其余的DOM可用
无论
<html>
<head>
</head>
<body>
<p id='test'> </p>
<script>
function toD(angle) {
return angle * (180 / Math.PI);
}
var a = document.getElementById('test').innerHTML = toD(15);
</script>
</body>
</html>
OR
<html>
<head>
</head>
<body>
<script>
window.onload = function() {
function toD(angle) {
return angle * (180 / Math.PI);
}
var a = document.getElementById('test').innerHTML = toD(15);
}
</script>
<p id='test'> </p>
</body>
</html>
注意:这是一种使用window.onload
的非常脏的方式,只有在这是要求onload
的页面上的唯一脚本时才应使用。{1}}。有关在使用多个脚本时正确使用onload
的详情,请参阅How to Use window.onload
the Right Way
答案 1 :(得分:4)
您需要等到文档加载,因为您在浏览器完全解析HTML之前尝试访问元素(#test
) - 您可以使用window.onload
以便JS在文档加载后运行 - 例如
window.onload =
// JS
答案 2 :(得分:2)
查看JavaScript控制台[f12],您将看到一条错误消息:
未捕获的TypeError:无法设置null
的属性'innerHTML'
发生错误是因为您在将元素呈现到页面之前引用该元素。
将script标记放在元素后面,以便它可以找到元素。
<html>
<head>
</head>
<body>
<p id='test'> </p>
<script>
function toD(angle) {
return angle * (180 / Math.PI);
}
var a = document.getElementById('test').innerHTML = toD(15);
</script>
</body>
</html>
答案 3 :(得分:1)
因为当您运行document.getElementById('test')
时,尚未呈现DOM对象<p id='test'> </p>
。
答案 4 :(得分:0)
将脚本放在页面底部以避免上述问题,也可以使用windows.onload http://www.w3schools.com/jsref/event_onload.asp - 确保元素在投射之前呈现。
答案 5 :(得分:0)
渲染中的问题 更改您的代码如下:
<html>
<body>
<p id='test'> </p>
<script language="javascript">
function toD(angle) {
return angle * (180 / Math.PI);
}
var a = document.getElementById('test').innerHTML = toD(15);
</script>
</body>
</html>
- &GT;请阅读有关如何解析网页的信息。您将清楚自己在页面中编写脚本的位置。
- &gt;对象应在对其执行操作之前呈现。你的代码div中没有渲染,你试图对它进行操作(即document.getElementById('test')。innerHTML = toD(15);)