どのように私はJavaScriptを使用してにrunat =「サーバー」ASPの要素にアクセスすることができますか?

StackOverflow https://stackoverflow.com/questions/675060

  •  21-08-2019
  •  | 
  •  

質問

:(。コードの記事などで)

方法を知っている「誰もがこれをやっているようだ...しかし、私はいけません 私はJavaScriptを使用して、ASPの要素を操作しようとするたびに、

私は「要素がnullである」または「文書が定義されていません」などのエラー.....

を取得します

ジャバスクリプト、通常は正常に動作します...しかし、私はにrunat =「server」属性を追加するときだけの要素が私のjavascriptには見えないようです。

任意の提案をいただければ幸いです。

おかげで、アンドリュー

役に立ちましたか?

解決

何おそらく起こっては、あなたの要素は/コントロールが命名コンテナ(マスターページ、ITemplate、ウィザード、など)として作用する1つのまたは複数のASP.NETコントロール内にあることであり、それは、そのIDを変更することが原因です。

あなたはそれがレンダリングされたHTMLで何が起こっているかです確認するには、ブラウザの「ソースの表示」を使用することができます。

あなたのJavaScriptがASPXページ内にある場合は、

、一時的に回避する最も簡単な方法は、<のhref = "http://encosia.com/2007/08/08/robust-aspnet-control-referencing-inにあります-javascript /」のrel = "noreferrerは">要素のClientIDプロパティを使用します。

:たとえば、あなたはJS経由で参照したいコントロールの名前をTextBox1があった場合
var textbox = document.getElementById('<%= TextBox1.ClientID %>');

他のヒント

要素のrunat="server"を作り、それは内部のだコンテナを命名何ASP.NETに基づいて、その要素のクライアント側のIDを変更します。あなたは要素を操作するためにdocument.getElementByIdを使用しているのであれば、あなたはそれを.NETによって生成された新しいIDを渡す必要があります。 に見てClientIdをのプロパティが...その生成されたIDを取得するあなたがそうのようなあなたのJavaScriptでインラインそれを使用することができます:

var element = document.getElementById('<%=myControl.ClientID%>');

あなたはテキストボックスを持っている場合:

<asp:TextBox id="txtText" runat="server" />

を使用できます:

var textBox=document.getElementById('<%=txtText.ClientID %>');

任意のWebBrowserコントロールは、同じClientIDプロパティを公開します。

すべての質問が回答されているが、

...私はさらにいくつかの情報を投稿するだろうと思いました

リック・シュトラールは、この問題の周りかなりのintrestingの仕事を提供しました。

http://www.west-wind.com/WebLog/posts /252178.aspxする

ASP .NET 4.0が到着したときにありがたいことに、それはあなたがクライアントIDのがどうなるかexacly指定することができます!

http://www.codeproject.com/KB/aspnet/ASP_NET4_0ClientIDFeature.aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top