javascript运行时错误0x800a1391

时间:2013-04-27 10:17:36

标签: javascript html5 visual-studio-2012

我正在学习一点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的例子。我有同样的效果。

有什么问题?我知道有相似的科目,但我似乎找不到与我匹配的科目。谢谢你的帮助。

此致 拉法尔

1 个答案:

答案 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>