使用数组创建TextNode / appendChild

时间:2013-09-04 00:31:54

标签: javascript html arrays appendchild createtextnode

我试图在表格中打印出所有数组项目。我正在为标题创建<th>标记,并为数组中的每个元素创建一个<tr>标记(与标题数组分开)。每当我尝试这样做时,我得到预期的结果,除了所有数组元素只是一个长字符串。所以我得到这样的东西:

网站1网站2网站3网站4
1,2,3,4,5,6

我希望它返回:

网站1网站2网站3网站4
1
2
3
4
5个

我尝试过.join('\n'),但它无效

代码:

    //Print Items in Level1
var createLevel1CellTag = document.createElement('td');
createLevel1CellTag.id = 'Level1';
var Level1TextNode = document.createTextNode(Level1Items.join('\n'));
createLevel1CellTag.appendChild(Level1TextNode);
document.getElementById('theHeaderTag0').appendChild(createLevel1CellTag);

我可以使用for loop来做,但是当我去创建元素Id时,它只会覆盖它。因此,当我使用我的onmouseover / onmouseout函数时,它只隐藏/显示数组元素中的一个。也许问题是我如何引用for loop中创建的所有ID。所以我循环创建ID,然后如何引用Level1x?

1 个答案:

答案 0 :(得分:2)

关于换行符,在DOM中,换行符由<br>元素表示,而不是\n个字符。因此,您应该遍历数组,并添加一个文本节点,后跟<br>

var header = document.getElementById('theHeaderTag0');
var createLevel1CellTag = header.appendChild(document.createElement('td'));
createLevel1CellTag.id = 'Level1';

for (var i = 0; i < Level1Items.length; i++) {
    createLevel1CellTag.appendChild(document.createTextNode(Level1Items[i]));
    createLevel1CellTag.appendChild(document.createElement("br"));
}

我并不完全遵循您关于按ID选择的备用问题。