我正在学习一点HMTL5来准备70-480考试。我正在尝试做一些javascript代码。它看起来像这样:
function inchestometers(inches) {
if (inches < 0)
return -1;
else {
var meters = inches / 39.37;
return meters;
}
}
var inches = 12;
var meters = inchestometers(inches);
document.write("the value in meters is " + meters);
var hello = document.getElementById("hello");
hello.firstChild.nodeValue = "Hello World";
我有这样的HTML代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Htnl 5 test</title>
<script src="script/test.js"></script>
</head>
<body>
<p id="hello">Hello</p>
</body>
</html>
在我的VS 2012中,我使用了Asp.net Empty Web应用程序项目,并添加了Js文件和html文件。问题是该功能正常运行而没有任何延迟。此功能取自此处:http://msdn.microsoft.com/en-us/library/cte3c772(v=vs.94).aspx
但是,我正在尝试运行我正在获取文档元素的代码,它会像主题中的错误一样崩溃。我调查的是hello获取null值。我也试过这里的代码:
http://msdn.microsoft.com/en-us/library/yfc4b32c(v=vs.94).aspx - div的例子。我有同样的效果。
有什么问题?我知道有相似的科目,但我似乎找不到与我匹配的科目。谢谢你的帮助。
此致 拉法尔
答案 0 :(得分:1)
您遇到问题,因为您的javascript代码在元素
之前运行<p id="hello">
已定义。
最简单的解决方案是将您的脚本包含在body部分的末尾而不是head部分,但这会导致document.write调用在其余内容之后发生。
另一个解决方案是将代码放在两个函数中,如
function do_conversion() {
var inches = 12;
var meters = inchestometers(inches);
document.write("the value in meters is " + meters);
}
function say_hello() {
var hello = document.getElementById("hello");
hello.firstChild.nodeValue = "Hello World";
}
然后像这样改变身体部分
<body onload='say_hello()'>
<script>
do_conversion();
</script>
<p id="hello">Hello</p>
</body>