なぜ次のことがうまくいかないのですか?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
なぜ次のことがうまくいかないのですか?
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
<label id="lbltipAddedComment"></label>
回答:
スクリプトは、ラベルがページ(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>
試したことがありますか、.innerText
または.value
代わりに.innerHTML
?
.value
ましたlabel
.text('Your Text')
スクリプトの実行時にlabel要素がロードされないためです。ラベル要素とスクリプト要素を交換すると、次のように機能します。
<label id="lbltipAddedComment"></label>
<script>
document.getElementById('lbltipAddedComment').innerHTML = 'Your tip has been submitted!';
</script>
.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でのみチェックインしました。)
.textContent
、.innerText
(読み取りには問題ありませんが)書き込み用のfirefox60では機能しませんでした(埋め込み入力フィールドも消去されました.innerHTML
)。だから私は頼らなければなりませんでしたdocument.getElementById('myLabel').childNodes[0].nodeValue="new label text"
(もちろん、インデックスは0以外のものかもしれません、それは少し厄介ですが私のためにそれを働きました)
jQueryを使用してラベルのテキストを変更する別の方法は次のとおりです。
<script>
$("#lbltipAddedComment").text("your tip has been submitted!");
</script>
JsFiddleの例を確認してください
これを試して:
<label id="lbltipAddedComment"></label>
<script type="text/javascript">
document.getElementById('<%= lbltipAddedComment.ClientID %>').innerHTML = 'your tip has been submitted!';
</script>