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