Как я могу получить доступ к узлам DOM из массива в JavaScript? - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь создать выпадающее меню, которое будет показывать строку рядом с ним, когда вы наводите курсор мыши на одну из ячеек. Я действительно новичок в использовании 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 ]

1 голос
/ 23 февраля 2012
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.

0 голосов
/ 23 февраля 2012

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

Вы не хотите вставлять один массив. Вы хотите вставить все элементы внутрь. В противном случае вам нужно было бы получить к ним доступ как tableCell[i][0][j]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...