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 ファイルの最後の行です。

私は何を間違っていますか?

4

3 に答える 3

4

これはASP.Netだと言っているのは正しいですか?そうである場合、次のようなインラインスクリプト:

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

外部JavaScriptファイルに入れることはできません。

于 2009-07-22T20:51:52.070 に答える
2

現在、JavaScriptをASP経由ではなく静的ファイルとして提供しているため、次のような行があります。

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

サーバーがそれらを解釈して正しい値に置き換えないため、は機能しなくなります。スクリプトでそれらをハードコーディングするか、メインページでそれらの行をインラインスクリプトとして残し、外部ファイルから参照できるグローバル変数として設定する必要があります。

于 2009-07-22T20:54:01.283 に答える
2

< script > タグを myScript.js 内に配置しましたか? はいの場合は、それらを削除します。

myScript.js で始まる必要があります

var optPrompt = "- 1 つ選択 -";

于 2009-07-22T20:49:43.540 に答える