1

ドキュメント内に関数を用意しました。

$(document).ready(function () {
    function test1() {
        alert('successful');
    }
});

今コードビハインド(C#)に私はこれを持っています:

ScriptManager.RegisterStartupScript(this, typeof(Page),"Con121", "test1();", true);

これはアラートでポップアップしません...しかし、ready関数から外せば問題なく動作します。準備ができたらこれが必要です。

私もこれを試みましたが成功しませんでした:

$(document).ready(function () {
    window.test1 function test1() {
        alert('successful');
    }
});
4

2 に答える 2

2

試す:

var test1;

$(document).ready(function () {
    test1 = function () {
        alert('successful');
    }
});

ここでの問題はスコープです。test1別の関数()内から関数を宣言してreadyいるため、コードビハインドから作成しているスタートアップスクリプトは、関数の外部から関数にアクセスできませんready

jQuery.readyまた、割り当てられていない変数を呼び出そうとする可能性があるため、起動スクリプトが起動されていることを確認する必要があります。

最後に、関数をwithingから具体的に宣言する必要がない場合は、ready関数の宣言と代入の両方がグローバルスコープに存在するように、関数を完全にそこから移動します。

于 2013-02-25T12:55:30.747 に答える
0

(の一部)あなたの問題は、あなたの呼び出しがあなたのページのHTMLのどこかにScriptManager.RegisterStartupScript呼び出しを置き、すぐに実行されることですが、の定義をラップすることは、呼び出し含むページが終わるまで呼び出される関数が存在しないことを意味しますすでにロードされています。test1();$(document).ready(function () { ... });test1

ドキュメントが関数を定義する準備ができるのを待つ理由はないので、それをまっすぐに定義してみませんか?

または、を削除して、定義の直後にScriptManager.RegisterStartupScript呼び出しを入れてみませんか?test1();これにより、ページの読み込みが完了するとすぐに呼び出されます。

$(document).ready(function () {
    function test1() {
        alert('successful');
    }
    test1();
});
于 2013-02-25T13:00:22.793 に答える