เหตุใดสิ่งต่อไปนี้จึงไม่เหมาะกับฉัน
<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) วางสคริปต์ไว้หลังป้ายชื่อหรือรอจนกว่าเอกสารจะโหลดเต็มที่ (ใช้ฟังก์ชัน OnLoad เช่นjQuery ready()
หรือhttp://www.webreference.com/programming/javascript/onloads/ )
สิ่งนี้ใช้ไม่ได้:
<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>
เนื่องจากไม่ได้โหลดองค์ประกอบฉลากเมื่อเรียกใช้สคริปต์ สลับองค์ประกอบป้ายกำกับและสคริปต์และจะใช้งานได้:
<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 ซึ่งทำให้เป็นเรื่องเล็กน้อย แต่ก็ใช้ได้ผลกับฉัน)
การใช้.innerText
ควรใช้งานได้
document.getElementById('lbltipAddedComment').innerText = 'your tip has been submitted!';
นี่เป็นอีกวิธีหนึ่งในการเปลี่ยนข้อความของป้ายกำกับโดยใช้ 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>
เนื่องจากสคริปต์จะถูกเรียกใช้งานก่อน .. เมื่อสคริปต์จะถูกเรียกใช้งานการควบคุมในขณะนั้นจะไม่ได้รับการโหลด ดังนั้นหลังจากโหลดการควบคุมคุณจะต้องเขียนสคริปต์
มันจะทำงาน.