1

よくわかりませんが、正しいjs nextSibling focus nextノードを理解した場合はどうなりますか?では、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が指摘したように、ULをULの子として持つことはできないため、HTMLの構造は無効です。ただし、LIの子としてULを持つことができます。したがって、この方法で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 に答える