JavaScript не может получить узлы - PullRequest
0 голосов
/ 25 декабря 2009

Я занимался этим некоторое время и не могу его взломать .. У меня есть какой-то javascript, пытающийся скрыть родные элементы div, помимо того, который передается через функцию Вот HTML:

<div id = "chat_content">
    <div id = "chat_content_1">This is div one</div>
    <div id = "chat_content_2">This is div two</div>
    <div id = "chat_content_3">This is div three</div>
</div>

А вот и JavaScript:

    function showGroup(id)
    {
        // show the the div that was clicked 
        var e = document.getElementById(id);
        e.style.display = 'block';

        // hide the others divs under the same parent
        var children = e.parentNode.childNodes;
        for (var i = 0; i < children.length; i++)
        {
            if (children[i] != e)
            {
                children[i].style.display = 'none';
            }
        };
    }

спасибо! и счастливых праздников :) 1007 *

Ответы [ 2 ]

0 голосов
/ 25 декабря 2009

Есть ли причина, по которой вы не используете previousSibling или nextSibling? Ваш код должен работать теоретически, но поскольку он, очевидно, не работает (вы проверили консоль ошибок?), Попробуйте следующее, которое работает с использованием некоторой идеи итератора, а не цикла массива:

// hide the others divs under the same parent
var child = e.parentnode.firstChild;

do
  {
    if (child != e)
      {
        child.style.display = 'none';
      }
    child = child.nextSibling;
  }
while (child.nextSibling != null);

Кстати, я рекомендую использовать что-то вроде jQuery. Это делает вещи проще.

0 голосов
/ 25 декабря 2009

Рассмотрите возможность использования jQuery. Делает жизнь проще. Проверьте это здесь

$("div#chat_content").siblings().css("display", "none");
...