3

これが私が話していることの簡単なデモンストレーションです

head タグ内の js:

  function changeTxt(frm){
    var lblo = frm.txt1;
    lblo.value = "hey guy";

    var lbl = frm.lblStatus;
    lbl.innerHTML = "hello world";
  }

aspx/html マークアップ:

<asp:Label ID="lblStatus" runat="server"></asp:Label>
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>

<button onclick="changeTxt(this.form);">go</button>

js はtxt1( inputhtml 要素) を見つけて値を変更します。lblStatusしかし、なぜ( spanhtml 要素)が見つからないのでしょうか? として出てきますundefined。それらはすべて同じ形です。

編集:span問題は js のノードにアクセスしているようです。私のように、フォーム オブジェクトを介してそれらにアクセスすることはできないと思います。

4

2 に答える 2

3

asp:Labelスパンまたはラベルとしてレンダリングされるためvalue、テキストを変更する正しい方法ではありません。次のようなものを使用する必要がありますinnerHTML

function changeTxt(frm){
    var lblo = document.getElementById('<%: txt1.ClientID %>');
    lblo.value = "hey guy";

    var lbl = document.getElementById('<%: lblStatus.ClientID %>');
    lbl.innerHTML = "hello world";
}

オブジェクトを取得するためにも使用する必要getElementByIdがあります。

を使用する場合は、潜在的なXSSの問題に注意してinnerHTMLください。

于 2012-04-10T19:05:07.290 に答える
2

ASP:Labelフォーム要素をレンダリングしません。spanまたはをレンダリングしlabelます。innerHTML を使用して値にアクセスする必要があります。ラベル コントロールがページ内に直接ない場合、またはマスター ページが使用されている場合、ASP.NET ランタイムは別の ID をレンダリングする可能性があるため、必ず ClientID を使用してください。

var lbl = document.getElementById("<%= lblStatus.ClientID %>");
lbl.innerHTML = "hello world";
于 2012-04-10T19:05:54.530 に答える