如何在javascript中从数组访问DOM节点?

时间:2012-02-23 18:03:22

标签: javascript html dom

我正在尝试构建一个下拉菜单,当您将鼠标悬停在其中一个单元格上时,该菜单会向其旁边显示一行。我是使用DOM和javascript的新手。

我遇到的问题是我创建的数组似乎无法访问我认为应该的内容。它只是我的语法,还是我需要以不同的方式处理它?这是我的代码:

window.onload = function () {
    var tableID = "strokerKitMenu";
    var table = document.getElementById(tableID);
    var tableRows = table.getElementsByTagName("tr");
    var tableCell = [];
    var counter = 0;
    for (i = 0; i < tableRows.length; i++) {
        tableCell[i] = new Array();
        tableCell[i].push(tableRows[i].getElementsByTagName("td"));
    }

    for (i = 0; i < tableCell.length; i++) {
        tableCell[0, i].style.display = "block"; //This doesn't compile
        alert(tableCell[0, i].Text); //This comes back "undefined"
        for (j = 1; j < tableCell[i].length; j++) //I haven't even tested this part yet
        {
            tableCell[i][j].onmouseover = function showCell() {
                tableCell[i][j + 1].style.display = "block";
            }
            tableCell[i][j].onmouseout = function hideCell() {
                this.style.display = "none";
            }
        } //end inner for loop
    } //end outer for loop
}

2 个答案:

答案 0 :(得分:1)

tableCell[0, i].style.display="block";   //This doesn't compile

此语法在JavaScript中无效:您为tableCell指定了两个索引但我想您的意思是tableCell[0][i].style.display="block";

alert(tableCell[0, i].Text);             //This comes back "undefined"

修复第一个错误后,您需要将其更改为tableCell[0][i].textContent

答案 1 :(得分:0)

tableCell[i].push.apply(tableCell[i], tableRows[i].getElementsByTagName("td"));

您不想推送单个数组。您想要推送所有元素。否则您必须以tableCell[i][0][j]

的形式访问它们