1

我对 getElementsByClassName / getElementsByTagName 的了解是,它们都创建了相关元素的节点列表,并且节点列表元素被视为对象这似乎是不可能的。

例子:

<!DOCTYPE html>
<head>
    <link rel="stylesheet" type="text/css"  href="stylesheet.css">
    <script src="javascript.js"></script>
</head>
    <body>
        <p id="pp"></p>
        <button onclick="test()">push to test</button>
        <p>dog</p>
        <p>cat</p>
        <p>snake</p>
    </body>

//javascript.js 文件

function test() {
    var paragraph = document.getElementsByTagName("p"),
        para1 = paragraph[0].innerHTML,
        ansBox = document.getElementById("pp");
    ansBox.innerHTML = para1;
}

这是较长代码的压缩版本。我认为 para1 变量应该是一个字符串,然后赋值语句应该将该字符串分配给 ansBox.innerHTML 但我什么也没得到。我已经修改了这个代码的几个版本都没有工作。如何让节点列表中的文本元素显示在 ansBox 中?

4

2 回答 2

1

head您的脚本已加载,但如果您像这样在其中加载脚本,则您的 DOM 尚未加载

<!DOCTYPE html>
<head>
    <link rel="stylesheet" type="text/css"  href="stylesheet.css">
</head>
    <body>
        <p id="pp"></p>
        <button onclick="test()">push to test</button>
        <p>dog</p>
        <p>cat</p>
        <p>snake</p>
        <script src="javascript.js"></script> <!-- load it here -->
    </body>

另外paragraph[0]ansBox参考同一个 DOM HTMLParagraphElement,这样你就知道哪个里面没有任何东西(一开始是空的)

于 2017-05-07T03:24:27.917 回答
0

在上面的 JavaScript 代码中,您将 HTML 放入一个空元素中,然后将其分配给自身,当然您会得到一个空值。

于 2017-05-07T03:38:06.587 回答