JavaScript运行时错误:无法获取未定义或空引用的属性“nodeType”

时间:2013-09-25 08:43:27

标签: html visual-studio-2010 knockout.js knockout-2.0

我尝试使用jquery附带的knockoutjs脚本和我自己的js文件运行一个应用程序,该文件具有与控件的ViewModel实际绑定。

每次运行应用程序时都会收到异常。

这是我系统或Visual Studio中的问题吗?我甚至尝试在浏览器中单独运行html文件,我看不到任何异常,但它阻止我执行所有其他功能主义者,这些功能主义者预计将从knockoutjs完成。

请在这方面帮助我

这是我的完整代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="Scripts/jquery-1.7.1.min.js"></script>
    <script src="Scripts/knockout-2.2.0.js"></script>

    <script type="text/javascript">        // Here's my data model
        debugger;
        function viewModel() {
            this.day = ko.observable('24');
            this.month = ko.observable('02');
            this.year = ko.observable('2012');

            this.fullDate = ko.computed(function () {
                return this.day() + "/" + this.month() + "/" + this.year();
            }, this);
        };

        ko.applyBindings(new viewModel());

    </script>

</head>
<body>
    <p>Day:
        <input data-bind="value: day" /></p>
    <p>Month:
        <input data-bind="value: month" /></p>
    <p>Year:
        <input data-bind="value: year" /></p>
    <p>The current date is <span data-bind="text: fullDate"></span></p>


</body>
</html>

1 个答案:

答案 0 :(得分:14)

您在浏览器呈现的html之前调用了applyBindings。您必须将脚本标记移动到页面底部或将代码放入文档就绪处理程序:

<script type="text/javascript"> 
$(function(){ 
    debugger;
    function viewModel() {
        this.day = ko.observable('24');
        this.month = ko.observable('02');
        this.year = ko.observable('2012');

        this.fullDate = ko.computed(function () {
            return this.day() + "/" + this.month() + "/" + this.year();
        }, this);
    };

    ko.applyBindings(new viewModel());
});
</script>