appendChild不起作用。 Javascript新手

时间:2013-03-12 19:34:51

标签: javascript appendchild textnode

我是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: &quot;Why I am I here?&quot;</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>

6 个答案:

答案 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之后,也可以更清晰地看待你正在尝试的事情。

http://jsfiddle.net/FzBrS/

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

  1. 删除此行:var element=document.getElementById("demo");
  2. element.appendChild(para);替换为parent.appendChild(para);
  3. 一切都会正常运作。

答案 5 :(得分:0)

您的with块包含语法错误,导致脚本根本无法运行。

将该块更改为:

with(para.style) {
    color = "#fff";
    fontFamily = "Arial";
    // and so on
}