0

我已经有一段时间了,我似乎无法破解它。我有一些 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';
            }
        };
    }

谢谢!和节日快乐:)

4

2 回答 2

0

考虑使用 jQuery。让生活更轻松。在这里查看

$("div#chat_content").siblings().css("display", "none");
于 2009-12-24T23:49:01.867 回答
0

你有什么理由不使用previousSiblingornextSibling吗?您的代码理论上应该可以工作,但是由于它显然没有(您检查过错误控制台吗?),请尝试以下使用迭代器思想而不是数组循环的方法:

// 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 之类的建议。它确实让事情变得更容易。

于 2009-12-24T23:54:21.480 回答