开发者问题收集

JavaScript 中的 createElement 和 appendChild

2013-08-09
796

我试图弄清楚为什么 createElement 和 appendChild 不起作用。我相信我的代码是正确的,所以我不太清楚为什么它不起作用...(我使用的是 IE 10)

代码已更新

JavaScript 文件:

var myObj = {

   firstName: "John",
   lastName: "Smith"
};

HTML 文件:

<!DOCTYPE html />
<html>
<title>The Data Structure</title>
<body>

<script type="text/javascript" src="TheData.js">

var theElement = document.createElement('p');
var theText = document.createTextNode(myObj.firstName);
theElement.appendChild(theText);
document.body.appendChild(theElement);

</script>
</body>
</html>
2个回答

问题是您 同时 script 标记上提供了 src ,并且 同时 在其中提供了内容。这是无效的,您可以执行其中一个,但不能同时执行。大多数浏览器将使用 src 并忽略内容。

除此之外,创建元素不会将其放入 DOM 中。您必须将其添加到某个位置(通过 appendChildinsertBefore 或类似方法)。

因此可能:

<script src="TheData.js"></script>
<!-- Note: Two separate script elements -->
<script>
var theElement = document.createElement('p');
var theText = document.createTextNode(myObj.firstName);
theElement.appendChild(theText);
document.body.appendChild(theElement); // <==== Note: Adding `the Element` to the DOM
</script>
T.J. Crowder
2013-08-09

您从未将 theElement 附加到文档!在末尾再添加一行:

document.body.appendChild(theElement);

顺便提一下,这个立即调用的函数有什么用?

(function () {
return myObj.firstName;
}());

它什么都不做!

bfavaretto
2013-08-09