0

document.getElementByIdを動的変数で使用しようとしています。

動的変数は、URL の分離コード (c#) から読み込まれたクエリ文字列に基づいて設定されます。

したがって、たとえば、これは理想的な方法です。

C# コードビハインド:

string myVar = Request.QueryString[0];
myVar = myVar + "Link";

JavaScript:

<script>
    document.getElementById(myVar)
</script>

これを機能させる方法について何か考えはありますか?

4

2 に答える 2

2

これを .aspx ページのスクリプト ブロックに挿入するだけです (「var」は Javascript の予約語であるため、名前として使用しないでください)。

<script>
    var id = '<%= HttpUtility.JavaScriptStringEncode(Request.QueryString[0]) + "something" %>';
    document.getElementById(id);
</script>

次を使用して、コードビハインドからページに挿入できますRegisterStartupScript

Page.ClientScript.RegisterStartupScript(this.GetType(), "QueryId", 
    string.Format("<script>var id='{0}';</script>", 
        HttpUtility.JavaScriptStringEncode(Request.QueryString[0]) + "something"
    )
);
于 2013-10-19T22:25:41.580 に答える
1

問題は、JS を使用してサーバー側と通信することはできません。JS はクライアント側であるため、サーバー側で作成した変数を取得できません。

それらを取得するには、次のものが必要です。

<%= write_the_thing_here %>

コードについては、次のように記述します。

string someThing = "<%= HttpUtility.HtmlEncode(Request.QueryString[0]) %>";
// now use this someThing in the document..you can use var instead of string
// but not them both..
document.getElementById(someThing); 
// note the semicolon on the end, to close it..

string varこれらは ASP.NET と同様に JavaScript のデータ型であるため、使用しないでください。コードは、これは一体何なのかと困惑する可能性があります。

これの代わりに、非表示の入力フィールドを次のように書くこともできます。

<input type="hidden" name="someThing" value="@Request.QueryString[0]" />

次に、それを使用して、動的にやりたいことを実行します。サーバーからの ID を本当に使用したい場合は、これが簡単な方法かもしれません。

jQueryバディについて申し訳ありません:

var someThinge = $('input[type="hidden"]').val();

そして、あなたの仕事を続けてください!

Alexei Levenkovによるヘルプ ノート: JavaScript のセミコロンはオプションです。それらの主な用途は、難読化ツール/最小化ツール (ツールまたは人) によって書かれたコードか、通常の開発者によって書かれたコードかを区別することです:)

于 2013-10-19T22:32:41.503 に答える