'对象期望'使用外部JS

时间:2011-05-03 13:10:09

标签: javascript

我有一些代码可以正常工作,如果它被添加到页面上的脚本标记。我已经将它移动到一个单独的JS文件中(与HTML页面位于同一个文件夹中),但是当我尝试调用它时,我会收到“对象预期”错误。

这是我的HTML页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
    <script type="text/javascript" src="Jscript1.js" />
    <script type="text/javascript">
        function t()
        {
            nsTest.test();
        }

        function t2()
        {
            nsTest.test2();
        }
    </script>
</head>
<body>
    <input type="button" value="test" onclick="t()" />
    <input type="button" value="test2" onclick="t2()" />
</body>
</html>

这是我的JS文件:

var nsTest = function ()
{
    var test = function ()
    {
        alert('nsTest.test');
    }

    var test2 = function ()
    {
        alert('nsTest.test2');
    }

    return {
        test: test,
        test2: test2
    }
} ();

我确信我错过了一些非常简单明了的东西,但我对JS很陌生,而且此时我已经绕圈了几个小时。

有人可以让我知道我做错了吗?

谢谢,

大卫

3 个答案:

答案 0 :(得分:4)

<script type="text/javascript" src="Jscript1.js" />

是XML而不是HTML。

因此,您没有完整的脚本标记,这可能会破坏以下脚本标记中的定义。

将其更改为

<script type="text/javascript" src="Jscript1.js"></script>

如果这不能解决问题(即,如果DTD是真正的XHTML DTD),则“JScript1.js”未正确提供。也许可以尝试在浏览器中加载它以检查它是否正在提供,并提供类似文本/ javascript的mime类型。

答案 1 :(得分:2)

(function nsTest (){
    var test = function (){
      alert('nsTest.test');
    }

    var test2 = function (){
      alert('nsTest.test2');
    }

return {
    test: test,
    test2: test2
}
}) ();

在立即通话时,您必须将功能括在括号中。

答案 2 :(得分:0)

我发现这可以寻找同样问题的帮助。在我的情况下,问题是我的标签有 type =“application / javascript”而不是 type =“text / javascript”

这在大多数浏览器中都有效但是使用“预期的对象”使IE 8出错。

type =“text / javascript”是正确的属性。

希望能有所帮助。

相关问题