我是JavaScript的新手,我目前有一项任务。有一个问题要求我们将新的textNode附加到<p>
标记。但我的appendChild并不想工作。我的所有其他代码都可以正常工作并完成它应该做的事情。显然我做错了。
修改 在我的控制台中,我收到一个错误:未捕获的TypeError:无法调用方法&#39; appendChild&#39;为null
<head>
<style type="text/css">
#demo {
font-family: Verdana, Geneva, sans-serif;
font-size: 14px;
font-style: italic;
background-color: #996;
height: 25px;
width: 400px;
padding: 20px;
}
</style>
</head>
<body>
<p id = "demo">Existential div asks: "Why I am I here?"</p>
<script>
document.title="Tag, you're it!";
var parent=document.body;
var child=document.getElementById("demo");
parent.removeChild(child);
var para=document.createElement("p");
var node=document.createTextNode("The quick brown fox jumps over the lazy dog.");
para.appendChild(node);
var element=document.getElementById("demo");
element.appendChild(para);
with(para){
color: "#FFF";
fontFamily : "Arial";
backgroundColor: "#345";
fontSize: "30px";
textAlign: "center";
width: "600px";
height: "200px";
padding: "20px";
margin: "0px auto";
};
</script>
</body>
答案 0 :(得分:3)
首先,删除元素,稍后,尝试在此之后添加内容。由于它已被删除,因此无法在DOM中找到它。
var child=document.getElementById("demo");
parent.removeChild(child);
var element=document.getElementById("demo"); // returns nothing, since it was removed
element.appendChild(para);
因此,如果您不愿意,请不要删除该元素。 JSFiddle demo
答案 1 :(得分:2)
您正在删除此处的元素
var child=document.getElementById("demo");
parent.removeChild(child);
然后尝试在这里使用它:
var element=document.getElementById("demo");
element.appendChild(para);
答案 2 :(得分:2)
你的逻辑错了。
删除这些行中名为demo的元素
var child=document.getElementById("demo");
parent.removeChild(child);
然后尝试将子节点附加到刚刚删除的节点:
var element=document.getElementById("demo");
element.appendChild(para);
您不能将元素附加到不再存在的元素。如果删除removeChild
行,那么一切都应该有效。
此外,您的with block错误,您需要将其更改为:
with(para.style){
color = "#FFF";
fontFamily = "Arial";
backgroundColor = "#345";
fontSize = "30px";
textAlign = "center";
width = "600px";
height = "200px";
padding = "20px";
margin = "0px auto";
};
在那之后,一切都应该是好的。
答案 3 :(得分:1)
您正在移除演示,然后尝试引用它。看到这个jsFiddle,即使在销毁p#demo之后,也可以更清晰地看待你正在尝试的事情。
document.title="Tag, you're it!";
var demo = document.getElementById("demo");
demo.parentNode.removeChild(demo);
var p = document.createElement("p");
document.body.appendChild(p);
var tn = document.createTextNode("The quick brown fox jumps over the lazy dog.");
p.appendChild(tn);
答案 4 :(得分:1)
您要移除<p id="demo">
(由变量子持有)
然后你试图将一个孩子添加到这个元素(已被删除)
您可以不删除此元素,也可以将para
元素添加到parent
var element=document.getElementById("demo");
element.appendChild(para);
替换为parent.appendChild(para);
一切都会正常运作。
答案 5 :(得分:0)
您的with
块包含语法错误,导致脚本根本无法运行。
将该块更改为:
with(para.style) {
color = "#fff";
fontFamily = "Arial";
// and so on
}