2017-07-02 75 views
2
<!DOCTYPE html> 
<html> 

<head> 
    <script> 
     document.getElementById("passage").innerHTML = "Paragraph changed!"; 
    </script> 
</head> 

<body> 

    <div id="passage">hello</div> 
    <div id="question"></div> 
    <div id="answers"></div> 

</body> 

</html> 

为什么document.getElementById("passage").innerHTML = "Paragraph changed!"不适用于我?我只是最后一个空白的屏幕,甚至没有原来的“你好”。加载元素之前Javascript innerhtml不能在div

回答

5

你的脚本调用,试装元素

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 
     <div id="passage">hello</div> 
     <div id="question"></div> 
     <div id="answers"></div> 
     <script> 
     document.getElementById("passage").innerHTML = "Paragraph changed!"; 
     </script> 
    </body> 
</html> 
+0

我看到,现在的工作!谢谢。 –

+0

@SrinivasML请尝试删除代码块中的多余空格。仅供参考,您也可以将其作为一个片段。 –

-2

加载元素之前,你的脚本调用后调用脚本。

尝试

$(document).ready(function() 
{ 
    document.getElementById("passage").innerHTML = "Paragraph changed!"; 
    }); 

JS:

(function(){ 
document.getElementById("passage").innerHTML = "Paragraph changed!"; 
}) 
+1

为什么它被投票? – techhunter

+0

出于最佳实践原因,您最好将代码放在文档底部。另外,问题中从未提及过jQuery。 –

+1

我没有得到你的第一点。关于第二点,我发布了jquery和js。 – techhunter

3

如果您检查控制台,你可以看到一个错误

Uncaught TypeError: Cannot set property 'innerHTML' of null

这是HTML页面解析和执行自上而下。

因此,它不能识别你提到的元素是什么。

所以,您应该使用一个事件侦听或只是身体标记结束前把脚本

方法1事件监听器

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<script> 
 
window.onload=function(){ 
 
    document.getElementById("passage").innerHTML = "Paragraph changed!"; 
 
}; 
 
</script> 
 
<body> 
 

 
<div id = "passage">hello</div> 
 
<div id = "question"></div> 
 
<div id = "answers"></div> 
 

 
</body> 
 
</html>

方法2:脚本只是以上身体标记

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 

 
<body> 
 

 
<div id = "passage">hello</div> 
 
<div id = "question"></div> 
 
<div id = "answers"></div> 
 
<script> 
 
document.getElementById("passage").innerHTML = "Paragraph changed!"; 
 
</script> 
 
</body> 
 
</html>

1

您应该在页面加载后执行脚本。
否则,当您引用它们时,页面的所有元素都可能不会附加到dom。

您可以使用 设计为在完全加载dom后执行的事件,而不是在可能容易出错的元素声明(您应该始终知道脚本的顺序)后移动脚本。
例如onload属性body

<body onload='document.getElementById("passage").innerHTML = "Paragraph changed!";'>