使用innerHTML改变p元素的内容

changing content of p element using innerHTML

本文关键字:元素 innerHTML 改变 使用      更新时间:2023-09-26

我有以下脚本:

var before = document.getElementById('before');    
if (switchElement.value == 'single'){
    for (var i=0; i < before.length; i++) {
        if (before[i].id == "before_label") {
            before[i].innerHTML = 'Image';
            break;
        }
    }
    after.style.display = 'none';   
} 

和HTML看起来像:

<div id="before">
    <p id="before_label"> Before Image: </p>
    <input type="file" name="before"  size="40">
    <input type="hidden" name="MAX_FILE_SIZE" value="10000000">
</div>

想知道为什么它不工作,改变内部html改变?

要访问before_labelinnerHTML,只需直接访问它:

document.getElementById('before_label').innerHTML = 'Image';

getElementById只返回一个元素。你需要通过childNodes来访问子对象。

试试这个:

var before = document.getElementById('before').childNodes;    
if (switchElement.value == 'single'){
    for (var i=0; i < before.length; i++) {
        if (before[i].id == "before_label") {
            before[i].innerHTML = 'Image';
            break;
        }
    }
    after.style.display = 'none';   
} 

为什么使用for循环?只需要通过id获取元素:

var before_label = document.getElementById('before_label');
if (switchElement.value == 'single') {
    before_label.innerHTML = 'Image';
    after.style.display = 'none';
}