在<ul> </ul> </li>中隐藏<li>元素

时间:2013-09-27 19:39:42

标签: javascript dom

我需要你的帮助

如果document.getElementById("file").children[1].style.display = "none";隐藏“文件”菜单中的“保存”项,则document.getElementById("edit").children[1].style.display = "none";无效,并且不会隐藏“编辑”菜单项中的“添加新项”。

<div id="menuwrapper">
    <div id="menu" style="width: 1001px; height: 20px">
        <ul>
            <li>
                <a href="#nogo"><div id="div_rssims_file">File</div></a>

                <ul id="file">
                    <li><a onclick="window.print()"><div id="div_rssims_file_print">Print</div></a></li>
                    <li id="li_rssims_file_save"><a onclick="rssims_save()"><div id="div_rssims_file_save">Save</div></a></li>
                    <li><a onclick="rssims_save();window.close()"><div id="div_rssims_file_save_exit">Save & Exit</div></a></li>
                    <li><a onclick="window.close()"><div id="div_rssims_file_exit">Exit</div></a></li>
                </ul>
            </li>

            <li>
                <a href="#nogo"><div id="div_rssims_edit">Edit</div></a>

                <ul id="edit">
                    <li><a href="#nogo" onclick="rssims_addnew()"><div id="div_rssims_edit_addnew">Add new</div></a></li>
                    <li><a href="#nogo" onclick="sims_delete()"><div id="delete">Delete</div></a></li>
                    <li><a href="#nogo" onclick="sims_reset()"><div id="clear">Clear Form</div></a></li>
                </ul>
            </li>

            <li>
                <a href="#nogo"><div id="div_rssims_view">View</div></a>

                <ul>
                    <li><a href="#nogo"><div id="goto_first">&gt;&gt; Go to First</div></a></li>
                    <li><a href="#nogo"><div id="goto_next">&gt;Go to Next</div></a></li>
                    <li><a href="#nogo"><div id="goto_prev">Go to Previous&gt;</div></a></li>
                    <li><a href="#nogo"><div id="goto_last">Go to Last&gt;&gt;</div></a></li>
                </ul>
            </li>

            <li>
                <a href="#nogo"><div id="div_rssims_reports">Reports</div></a>

                <ul>
                    <li><a href="#nogo"><div id="export_excel">Export to Excel Table</div></a></li>
                    <li><a href="#nogo" onclick="sims_compile_htmltable()"><div id="export_html">Export to HTML Table</div></a></li>
                    <li><a href="#nogo" onclick="sims_compile_htmllist()"><div id="export_list">Export to HTML List</div></a></li>
                    <li><a href="#nogo" onclick="sims_compile_contactcard()"><div id="export_contact">Export as Contact Card</div></a></li>
                </ul>
            </li>

            <li>
                <a style="cursor: pointer;" onclick="sims_logoff()"><div id="div_rssims_logoff">Logoff</div></a>
            </li>
        </ul>
    </div>
</div>

3 个答案:

答案 0 :(得分:10)

试试这个

document.getElementById("edit").children[0].style.display = "none"

Add New是#edit

的第一个位置

答案 1 :(得分:1)

您没有删除正确的项目,因为[1]会选择第二个子项。要获取第一个,请改用[0]

document.getElementById("edit").children[1].style.display = "none"

这适用于第一个给出的示例,可能是因为 是第二个元素。

答案 2 :(得分:1)

document.getElementById("file").children[1].style.display = "none";

隐藏“保存”菜单项(<ul id="file">的第二个孩子)。

document.getElementById("edit").children[1].style.display = "none";

隐藏'删除'菜单项(<ul id="edit">的第二个孩子)。

如果你想隐藏“添加新”子菜单项,你应该像这样定位<ul id="edit">的第一个孩子:

document.getElementById("edit").children[0].style.display = "none";

如果您要隐藏包含所有项目的整个“修改”子菜单,则应定位<ul id="edit">,如下所示:

document.getElementById("edit").style.display = "none";

这确实指出了使用children作为选择菜单项的方法的一个重要缺点。如果项目的顺序发生变化,那么您的Javascript也会发生变化。

根据class名称或id定位项目,您会好得多。如果您从每个项目的div链接中移除内部a(这是多余的),并替换id元素上的li,则只需定位菜单你想要的项目:

            <ul id="edit">
                <li id="div_rssims_edit_addnew"><a href="#nogo" onclick="rssims_addnew()">Add new</a></li>
                <li id="delete"><a href="#nogo" onclick="sims_delete()">Delete</a></li>
                <li id="clear"><a href="#nogo" onclick="sims_reset()">Clear Form</a></li>
            </ul>

document.getElementById("div_rssims_edit_addnew").style.display = "none";

无论物品的顺序如何,这总是有效的。如果页面中没有元素,它仍然会出错。为了防止这种情况,最好使用像jQuery这样的javascript库来执行此操作:http://api.jquery.com/hide/