0

次の内容の global.js という名前の JavaScript ファイルを作成しました。

;

var Globals = 
{
    function getAppRoot() {
        if (typeof (jQuery) !== "undefined")
            return $("#ApplicationRoot").attr("href");
    };

    appRoot : getAppRoot();
};

次に、HTML ファイル (ASP.NET MVC プロジェクト) に、次のように JavaScript ファイルを含めました。

<link rel = "home" id = "ApplicationRoot" 
    href = "@Url.Content("~/")" />

<script src = "@Url.Content("~/Scripts/jquery-1.8.3.js")" 
    type="text/javascript"></script>

<script src = "@Url.Content("~/Scripts/global.js")" 
    type = "text/javascript"></script>

そして、HTML ファイルの SCRIPT タグ内に、次のように記述します。

$(document).ready( 
    function() { 
        alert("Globals.appRoot = " + window.Globals.appRoot); 
    } );

ただし、コードを実行すると、Globals未定義であることがわかります。

更新 ありがとうございます。等号 (代入演算子) を忘れていたことに気付きました。

私が今観察しているもう1つの重要なこと(完全には確信が持てませんでした)は、次のとおりです。あなたのコメントから、オブジェクト宣言は次のようになると想定しています:

var foo = { /* cannot have anything that does not adhere to the bar : gar syntax? */ }

別の更新 問題は次のとおりです。appRootそうしてメソッドを作成した場合:

var Globals = 
{
    appRoot : function() { }
};

またはそのように:

var Globals = 
{
    appRoot : function getAppRoot() { }
}

appRootクライアントは、次の一連の括弧を使用して呼び出す必要があります。appRootメソッドではなくプロパティにしたいと思います。それ、どうやったら出来るの?

最終更新 コードを次のように変更しました。

// globals.js
// I understand that the starting semi-colon is not 
// required. I'd left it in for reasons that it is used
var Globals = 
{
    appRoot : $("#ApplicationRoot").attr("href");
};


// inside the HTML file in $(document).ready();

if (tyepof(Globals) == "undefined" || Globals == null)
  alert("Globals is either undefined or null");
else
  alert("Globals.appRoot = " + Globals.appRoot);

Globals is either undefined or nullという警告メッセージが表示されます。

ANSWER では、最後に。ご助力いただきありがとうございます。オブジェクトの宣言/初期化で、別の軽微な構文エラーが発生しましたGlobals

appRootはオブジェクトのメンバーであり、オブジェクト初期化構文を使用していたため、 の宣言をセミコロンで終了するべきではありませんでしたappRoot。代わりに、カンマを使用するか、最後 (および の唯一のメンバー) であるため、終了文字を付けずにそのままにしておく必要がありましたGlobals

4

2 に答える 2

3

globals.js を書き直す必要があります。次のように動作するはずです。

var Globals = {
    appRoot : function() {
        if (typeof (jQuery) !== "undefined") {
            return $("#ApplicationRoot").attr("href");
        }
    }
};
于 2013-04-08T14:08:11.977 に答える
2

次のglobal.jsようになります。

//; << not needed
var Globals = /*equal to missing*/
{
    appRoot : function getAppRoot() {
        if (typeof (jQuery) !== "undefined")
            return $("#ApplicationRoot").attr("href");
    }
};
于 2013-04-08T14:07:36.253 に答える