0x800a138f-JavaScript运行时错误:无法获取属性'fn'的未定义引用或null引用

0x800a138f - JavaScript runtime error: Unable to get property 'fn' of undefined or null reference

本文关键字:引用 未定义 运行时错误 null fn 获取 属性 0x800a138f-JavaScript      更新时间:2023-10-04

我正在尝试做这个例子http://jsfiddle.net/pmrotule/w7aakdbb/54/

我得到了这个异常

0x800a138f-JavaScript运行时错误:无法获取未定义或null引用的属性"fn"。和0x800a01b6-JavaScript运行时错误:对象不支持属性或方法"multiselect"。它在bootstarp-multiselect.js 中此时抛出错误

$.fn.multiselect = function(option, parameter, extraOptions) {
    return this.each(function() {
        var data = $(this).data('multiselect');
        var options = typeof option === 'object' && option;
        // Initialize the multiselect.
        if (!data) {
            data = new Multiselect(this, options);
            $(this).data('multiselect', data);
        }
        // Call multiselect method.
        if (typeof option === 'string') {
            data[option](parameter, extraOptions);
            if (option === 'destroy') {
                $(this).data('multiselect', false);
            }
        }
    });
};

我的HTML代码:

<script src="~/Scripts/bootstrap-multiselect.js"></script>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<link href="~/Content/bootstrap-multiselect.css" rel="stylesheet" />
<script src="~/Scripts/bootstrap.js"></script>
<select id="ddlCars" multiple="multiple">
   <option value="Accord">Accord</option>
   <option value="Duster">Duster</option>
   <option value="Esteem">Esteem</option>
   <option value="Fiero">Fiero</option>
</select>
<script>
   $('#ddlCars').multiselect();
</script>

我在VS2013中使用ASP.NET MVC项目。我得到了这个例外我是JS和BootStarp的新手。

更正脚本的顺序,jQuery js应该是第一个加载的,因为bootstrap.jsbootstrap-multiselect.js依赖于jquery js

<link href="~/Content/bootstrap-multiselect.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/bootstrap-multiselect.js"></script>

错误表明$尚未定义(在执行bootstarp multiselect.js期间),因为您需要首先加载jQuery。

由于bootstrap-multiselect.js可以依赖于bootstrap,所以在bootstrap-multiselect.js之前也加载bootstrap.js是无害的。

因此:

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/bootstrap-multiselect.js"></script>
...

javascript文件包含顺序错误,应首先包含jQuery文件。