【发布时间】:2020-04-15 12:43:31
【问题描述】:
我想使用 AJAX 在 div-container 中创建一个 div-container,然后在内部容器中写入“Hello World”。外容器没有特殊功能。它只是容纳内部容器。这是我的代码:
inex.html:
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"></head>
<body>
<div id="outerContainer"></div> // this is my outer container
<script>
function request(){
var req = new XMLHttpRequest();
req.open("get", "response.php", true);
req.onreadystatechange=function(){
if(this.readyState == 4 && this.status == 200)
document.getElementById('outerContainer').innerHTML = this.responseText;
};
req.send();
}
request();
// write "Hello World" in the inner container
document.getElementById('innerContainer').innerHTML = "Hello World";
</script>
</body>
</html>
response.php
<?php
echo "<div id='innerContainer'>default text</div>"; // put this container inside the outer container
?>
运行程序后,我可以在 DOM 中看到内部 div 容器在外部 div 容器中正确创建,并且它的 ID 是“innerContainer”。但是我尝试在内部容器中写“Hello World”是行不通的。相反,它的内容仍然是“默认文本”。控制台输出:“index.html:21 Uncaught TypeError: Cannot set property 'innerHTML' of null”。
如果有任何建议或帮助,我将不胜感激。
【问题讨论】:
-
我认为在运行脚本时,innerContainer 不存在。请记住,您正在发出异步请求。尝试将
document.getElementById('innerContainer').innerHTML = "Hello World";放在 if 语句if(this.readyState == 4 && this.status == 200)中,这样它只会在生成 innerContainer div 后执行。
标签: javascript php ajax containers getelementbyid