следующий вопрос, должен быть простым - PullRequest
1 голос
/ 25 мая 2010

Хорошо, я пытаюсь справиться с этой функцией nextSibling в JS.Вот моя проблема в следующем коде ...

var fromRow = document.getElementById("row_1");

while(fromRow.nodeType == 1 && fromRow.nextSibling != null)
{
    var fRowId = fromRow.id;
    if (!fRowId) continue;

    // THIS ONLY gets done once and alerts "row_1" ONLY :(
    alert(fRowId);

    fromRow = fromRow.nextSibling;
}

Хорошо, может кто-нибудь сказать, что не так с этим кодом?Рядом с этим элементом document.getElementById("row_1"); точно есть братья и сестры, и я вижу их, и все они имеют атрибуты идентификатора, так почему же он не получает атрибуты идентификатора братьев и сестер ??Я не понимаю.

row_1 является элементом TR, и мне нужно получить элементы TR рядом с ним в этой таблице, но по какой-то причине он получает только 1элемент, который я уже могу получить используя document.getElementById, arggg.

Спасибо, ребята:)

Ответы [ 2 ]

2 голосов
/ 25 мая 2010

Ваш цикл while останавливается, как только он встречает узел, не относящийся к типу 1. Поэтому, если между вашими элементами есть пробелы, цикл while будет прерываться после первого элемента.

Что вы, вероятно, хотите:

while(fromRow.nextSibling != null)
{
    if(fromRow.nodeType == 1) {
        ...
    }
}
2 голосов
/ 25 мая 2010

Попробуйте:

var fromRow = document.getElementById("row_1");

while(fromRow !== null)
{
    var fRowId = fromRow.id;
    if (!fRowId || fromRow.nodeType != 1) {
        fromRow = fromRow.nextSibling;
        continue;
    }

    // THIS ONLY gets done once and alerts "row_1" ONLY :(
    alert(fRowId);
    fromRow = fromRow.nextSibling;
}

Хотя fromRow.nextSibling != null остановится на второй и последней итерации, потому что вы уже установили fromRow на nextSibling в конце. Кроме того, вы не обязательно хотите останавливаться, если следующий узел не является элементом, вы просто хотите перейти на следующий, если это возможно. Наконец, если вы нажмете continue в исходном примере, вы попадете в бесконечный цикл, потому что fromRow никогда не изменит значение.

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