1

我不确定,但如果我理解正确的 js nextSibling 关注下一个节点?那么,当我想在 li 中选择 ul 时,为什么会遇到麻烦?

    <ul>
<li><input id="btn-page" type=button onclick="displayMenu();" /></li>
    <ul class="hide">
        <li>Some text</li>
    </ul>
    <li>...</li>
   </ul>

还有我的 js 函数:

    function displayMenu() {
   var idMenu = event.target.id;
   var ulDisplay = document.getElementById(idMenu).nextSibling;
   ulDisplay.style.display = 'block';
}

我想我忘记了什么,但我不知道为什么。感谢帮助 :)

4

2 回答 2

2

正如@andreas 指出的那样,您的 HTML 结构无效,因为您不能将 UL 作为 UL 的子级。但是您可以将 UL 作为 LI 的子级。因此,请考虑以这种方式更新您的 HTML。先前类似答案中的辅助函数“Next()”使用用于查找 UL的 Javascript 隐藏元素的下一个兄弟

<!DOCTYPE html>
<html>
    <head>
        <style type="text/css">
            .hide { display: none; }
        </style>
        <title>Title</title>
        <script type="text/javascript">
            function next(elem) {
                do {
                    elem = elem.nextSibling;
                } while (elem && elem.nodeType != 1);
                return elem;                
            }

            function displayMenu(id) {
                var ulDisplay = next(document.getElementById(id));
                ulDisplay.style.display = 'block';
            }
        </script>
    </head>
    <body>
        <ul>
            <li>
                <input id="btn-page" value="show" type=button onclick="displayMenu(this.id);" />
                <ul class="hide"><li>Some text</li></ul>
            </li>
            <li>...</li>
        </ul>
    </body>
</html>
于 2012-08-30T12:53:47.313 回答
0

这种方式似乎更好。

HTML

<ul>
 <li>
  <input id="btn1" type='button' onclick="displayMenu(event);" />
 </li>
 <li><ul id="page1" style="display: none" class="hide">
  <li>Some text</li>
 </ul></li>
 <li>...</li>
</ul> <

JS

function displayMenu(event) {
    var id = event.target.id.substring(3);
    var ulDisplay = document.getElementById("page" + id);
    ulDisplay.style.display = "block";
}
于 2012-08-30T12:32:48.130 回答