Javascript 使用innerHTML更改p元素的内容

Javascript 使用innerHTML更改p元素的内容,javascript,Javascript,我有以下脚本: 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'; brea

我有以下脚本:

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';   
} 
var before=document.getElementById('before');
if(switchElement.value=='single'){
for(var i=0;i
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更改为change?

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';   
} 
var before=document.getElementById('before').childNodes;
if(switchElement.value=='single'){
for(var i=0;i
为什么使用for循环?只需通过其id获取元素:

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

要访问标签
之前的
innerHTML
,只需直接访问它:

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

你有一个或多个“之前”分区吗?我相信平硐只有一个。我认为这里的误解是,您需要循环通过“before”div来访问其子级。@karim79:我认为代码是错误的。即使他之前有多个
,GEBId也只返回一个。@adit:你能再详细说明一下并显示一些代码和标记吗?可能也是个小问题。这是个愚蠢的问题,但是如果我没有将它包含在任何html标记中呢?有办法修改它吗?问题是,使用它会给我一个额外的中断/换行符,您可以始终使用
标记来包装您试图选择的内容。所以
一些文本