从HTML中取出JS代码以分离js文件,从而导致错误

时间:2017-04-20 01:04:39

标签: javascript html

我将js函数插入到html中,现在我从HTML中取出JS代码来分隔js文件,这导致JS函数未定义错误?为什么?以及如何解决它?

    @(Html.Kendo().Grid<Model>()
        .Name("grid")
        .Columns(columns =>
        {

            columns.Bound(p => p.Name);

        })

        .Events(ev =>
        {
            ev.DataBound("initMenus");

        })

    )
<script>
function initMenus(e) {
    $(".templateCell").each(function () {
        eval($(this).children("script").last().html());
    });
}
</script>

现在我将js函数分离到test.js:

<script src="~/js/test.js"></script>

 @(Html.Kendo().Grid<Model>()
            .Name("grid")
            .Columns(columns =>
            {

                columns.Bound(p => p.Name);

            })

            .Events(ev =>
            {
                ev.DataBound("initMenus");

            })

        )

我的test.js

function initMenus(e) {
        $(".templateCell").each(function () {
            eval($(this).children("script").last().html());
        });
    }

我确信test.js的路径是正确的。

这是错误: enter image description here

2 个答案:

答案 0 :(得分:0)

浏览器兑现

浏览器可以兑现test.js文件,尝试在.js文件中添加一些版本控制。

基本示例

<script src="~/js/test.js?v=1"></script>

每次更改.js文件

时,都会增加此值

按F5通常不会强制浏览器获取新的.js文件

答案 1 :(得分:0)

尝试将js移动到下面:

如果以前使用此代码顺序,你应该这样做,即使是在另一个js文件中

 @(Html.Kendo().Grid<Model>()
            .Name("grid")
            .Columns(columns =>
            {

                columns.Bound(p => p.Name);

            })

            .Events(ev =>
            {
                ev.DataBound("initMenus");

            })

        )


<script src="~/js/test.js"></script>