Javascript 文件引用问题(使用 jQuery)

发布于 2024-07-27 13:19:48 字数 2444 浏览 8 评论 0原文

之前,我有这样的:

<head>
    <script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script type="text/javascript">
        var optPrompt = "- Select One -";
        var subCats;
        var parentCats;
        var nextBtn;

        var ParentChanged = function() {
            ClearDescription();

            if (this.selectedIndex == 0) {
                $(subCats).html($("<option>").text(optPrompt));
            }


            $.getJSON('<%=Url.Action("GetChildCategories") %>', { parentId: $(this).val() },
                    function(data) {
                        subCats.options.length = 0;
                        $("<option>").text(optPrompt).appendTo(subCats);
                        $(data).each(function() {
                            $("<option>").attr("value", this.ID).text(this.Name).appendTo(subCats);
                        });
                    });
        }

        var DisplayDescription = function(catId) {
            $.ajax({
                url: '<%=Url.Action("GetDescription") %>',
                data: { categoryId: catId },
                dataType: 'html',
                success: function(data) {
                    $("p#categoryDescription").html(data);
                }
            });
        }

        var ChildChanged = function() {
            var catSelected = this.selectedIndex != 0;

            if (!catSelected) ClearDescription();
            else DisplayDescription($(this).val());
        }

        var ClearDescription = function() {
            $("p#categoryDescription").html('');
        }

        $(function() {
            parentCats = $("select#Category").get(0);
            subCats = $("select#Subcategory").get(0);
            nextBtn = $("input#nextButton").get(0);

            $(parentCats).change(ParentChanged);
            $(subCats).change(ChildChanged);
        });

    </script> 
</head>

然后我将所有内联脚本放入一个文件(myScript.js)中,并将我的 HTML 更改为:

<head>
    <script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script src="/Scripts/myScript.js" type="text/javascript"></script> 
</head> 

现在没有任何效果。 我在 IE7 中打开页面,出现页面错误:

线路:54
错误:未知名称。

第 54 行恰好是我的外部 javascript 文件的最后一行。

我究竟做错了什么?

Before, I had this:

<head>
    <script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script type="text/javascript">
        var optPrompt = "- Select One -";
        var subCats;
        var parentCats;
        var nextBtn;

        var ParentChanged = function() {
            ClearDescription();

            if (this.selectedIndex == 0) {
                $(subCats).html($("<option>").text(optPrompt));
            }


            $.getJSON('<%=Url.Action("GetChildCategories") %>', { parentId: $(this).val() },
                    function(data) {
                        subCats.options.length = 0;
                        $("<option>").text(optPrompt).appendTo(subCats);
                        $(data).each(function() {
                            $("<option>").attr("value", this.ID).text(this.Name).appendTo(subCats);
                        });
                    });
        }

        var DisplayDescription = function(catId) {
            $.ajax({
                url: '<%=Url.Action("GetDescription") %>',
                data: { categoryId: catId },
                dataType: 'html',
                success: function(data) {
                    $("p#categoryDescription").html(data);
                }
            });
        }

        var ChildChanged = function() {
            var catSelected = this.selectedIndex != 0;

            if (!catSelected) ClearDescription();
            else DisplayDescription($(this).val());
        }

        var ClearDescription = function() {
            $("p#categoryDescription").html('');
        }

        $(function() {
            parentCats = $("select#Category").get(0);
            subCats = $("select#Subcategory").get(0);
            nextBtn = $("input#nextButton").get(0);

            $(parentCats).change(ParentChanged);
            $(subCats).change(ChildChanged);
        });

    </script> 
</head>

Then I put all of my inline script into a file (myScript.js) and changed my HTML to this:

<head>
    <script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script src="/Scripts/myScript.js" type="text/javascript"></script> 
</head> 

And now nothing is working. I opened up my page in IE7 and it had a page error that read:

Line: 54
Error: Unknown name.

Line 54 happens to be the last line of my external javascript file.

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

逐鹿 2024-08-03 13:19:49

我说这是 ASP.Net 吗? 如果是,则内联脚本如:

<%=Url.Action("GetDescription") %>

无法进入外部 JavaScript 文件。

Am I right in saying that this is ASP.Net? If it is, inline scripts like:

<%=Url.Action("GetDescription") %>

cannot go in the external JavaScript file.

笑饮青盏花 2024-08-03 13:19:49

你有没有把< 脚本> myScript.js 中的标签? 如果是,请将其删除。

你的 myScript.js 应该以

var optPrompt = "- Select One -";开头

Did you put the < script > tag inside your myScript.js? If yes, remove them.

Your myScript.js should start with

var optPrompt = "- Select One -";

把梦留给海 2024-08-03 13:19:49

由于您现在将 js 作为静态文件而不是通过 ASP 提供,因此类似的行将

<%=Url.Action("GetChildCategories") %>

不再起作用,因为服务器不会解释它们并用正确的值替换它们。 您需要在脚本中对它们进行硬编码,或者将这些行保留为主页中的内联脚本,并将它们设置为全局变量,然后您可以从外部文件中引用它们。

Since you are now serving the js as a static file, rather than via your ASP, lines like

<%=Url.Action("GetChildCategories") %>

will no longer work as the server doesn't interpret them and replace them with the correct values. You'll need to hard-code them in the script, or leave those lines as inline scripts in the main page and set them as global variables which you can then reference from the external file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文