JavaScriptを使用してラベルテキストを変更する


90

なぜ次のことがうまくいかないのですか?

<script>
    document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>

1
おっと!申し訳ありませんが、「しないでください」; 0
phil crowe 2010

4
スクリプトでラベルinnerHtmlを変更しようとすると、lbltipAddedCommentが実際にはページに表示されないためです。ラベルの後にスクリプトを挿入するか、jqueryを使用します$(document).ready()
Andrew Orsich 2010

申し訳ありませんが、編集ボタンが表示されませんでした。
phil crowe 2010

私はここで提案されたすべてを試しましたが、何もうまくいきませんでした。
ラジャンミシュラ2017年

回答:


137

スクリプトは、ラベルがページ(DOM内)に存在する前に実行されるためです。ラベルの後にスクリプトを配置するか、ドキュメントが完全に読み込まれるまで待ちます(jQuery ready()またはhttp://www.webreference.com/programming/javascript/onloads/などのOnLoad関数を使用します

これは機能しません:

<script>
  document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>
<label id="lbltipAddedComment">test</label>

これは機能します:

<label id="lbltipAddedComment">test</label>
<script>
  document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';
</script>

この例(jsfiddleリンク)は順序(最初にスクリプト、次にラベル)を維持し、onLoadを使用します。

<label id="lbltipAddedComment">test</label>
<script>
function addLoadEvent(func) {  
      var oldonload = window.onload;  
      if (typeof window.onload != 'function') {  
        window.onload = func;  
      } else {  
        window.onload = function() {  
          if (oldonload) {  
            oldonload();  
          }  
          func();  
        }  
      }  
    }  

   addLoadEvent(function() {  
document.getElementById('lbltipAddedComment').innerHTML = 'your tip has been submitted!';

    });  
</script>

.textContentの答えは実際には正しいと思います
Paul Taylor

1
@PaulTaylor、この回答は2010年からここにあり、92の賛成票(そして今、あなたの反対票)があります。質問はinnerHTMLを使用していたので、彼のコードを動かすために必要なものだけを変更しました。追加のアイデアを提案することは常に問題ないと思いますが(「ねえ、ところで、innerhtml / innertextの代わりにtextcontentを使用してください)、それはOPの問題ではありませんでした...反対票を投じる必要はありません。
Konerak18年

さて、彼はそれを機能させたことがありますか?彼の最後のコメントは何も機能しなかったので、あなたのソリューションが機能しなかった、私にとっては確かに機能しなかった、このjsfiddle.net/cfxrLpe9/4はtextContentで機能するがinnerHtmlでは機能しないというのが私の理解でしたそれ ?
ポールテイラー

@PaulTaylor彼がこの回答を承認済みとしてマークしたので、回答はおそらくOPで機能しました。コードにタイプミスがあります。答えが示すように、innerHTMLの代わりにinnerHtmlを使用しています。jsfiddle.net/cfxrLpe9/6
Randall Flagg

22

試したことがありますか、.innerTextまたは.value代わりに.innerHTML


.innerTextはラベルに対して機能します。<Head>内にScriptタグがあり、<body>内にデザインがあります。それは私にとってはうまくいきますが。
ジャイ

@AshwinGあなたのコメントは私を救った。私は頭を殴ってい.valueましたlabel
Prabs 2016年

使用してみてください.text('Your Text')
卑劣な

15

スクリプトの実行時にlabel要素がロードされないためです。ラベル要素とスクリプト要素を交換すると、次のように機能します。

<label id="lbltipAddedComment"></label>
<script>
    document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>

1
ああ、気づかなかった!はい、投稿されたコードが実際のコードを反映している場合(document.readyなどで起動するためにjqueryを使用していない場合)、それがうまく機能しない理由です。
GordonM 2010

9

.textContent代わりに使用してください。

これを試すまで、ラベルの値を変更するのにも苦労していました。

これで解決しない場合は、オブジェクトを調べてconsole.dir、次の質問に示すように、コンソールにログを記録して設定できるプロパティを確認してください。HTML要素をJavaScriptオブジェクトとしてログに記録するにはどうすればよいですか。


ありがとうございました。私のユースケースは質問のユースケースと似ていると思います(ただし、厳密には確認していません)。ネストされた入力要素を持つラベルのテキストを取得および/または変更しようとしていました。 /または"enter info here:"次の部分を変更します<label id='myLabel'>enter info here:<input type='text' id='inp'/></label>。のみ.textContent働いていない、とのどれも.innerHTML.innerTextまたは.value働いていました。(免責事項:Chromeでのみチェックインしました。)
Andrew Willems 2017年

ありがとう私は同じ問題にぶつかった
ポールテイラー

2
@AndrewWillemsは残念ながら.textContent.innerText(読み取りには問題ありませんが)書き込み用のfirefox60では機能しませんでした(埋め込み入力フィールドも消去されました.innerHTML)。だから私は頼らなければなりませんでしたdocument.getElementById('myLabel').childNodes[0].nodeValue="new label text"(もちろん、インデックスは0以外のものかもしれません、それは少し厄介ですが私のためにそれを働きました)
Matija Nalis 2018年

8

使用する.innerText必要があります。

document.getElementById('lbltipAddedComment').innerText = 'your tip has been submitted!';


0

これを試して:

<label id="lbltipAddedComment"></label>
<script type="text/javascript"> 
      document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!';
</script>

1
ソリューションへのリンクは大歓迎ですが、それがなくても回答が役立つことを確認してください。リンクの周りにコンテキストを追加して、他のユーザーがそれが何であるか、なぜそこにあるのかを理解できるようにしてから、ページの最も関連性の高い部分を引用してください。ターゲットページが利用できない場合に再リンクします。リンクに過ぎない回答は削除される場合があります。
paper1111 2018

0

スクリプトが最初に実行されるためです。スクリプトが実行されるとき、その時点ではコントロールはロードされていません。したがって、コントロールをロードした後、スクリプトを作成します。

それが動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.