我是javascript的新手,我正试图隐藏或显示onclick事件的子菜单。 这是代码: 的javascript:
<script type="text/javascript">
bool shown = false;
document.getElementById("test").onclick = SubMenuDisplay();
function SubMenuDisplay()
{
alert("Hello World!");
if(!show)
{
$('subm').show();
shown = true;
}
else
{
$('subm').hide();
shown = false;
}
}
</script>
和html:
<li id="test"><a href="#">Account</a>
<ul id="subm">
<li><a href="./account.php#login">Login</a></li>
<li><a href="./account.php#signup">Sign up</a></li>
</ul>
</li>
但是我的onclick事件根本不起作用。
有人可以提供帮助吗?
答案 0 :(得分:0)
只需删除()
:
document.getElementById("test").onclick = SubMenuDisplay;
您使用函数分配事件而不是函数的返回值。并确保在声明函数后执行此操作,否则可能会引发未定义的错误。
function SubMenuDisplay()
{
alert("Hello World!");
if(!show)
{
$('subm').show();
shown = true;
}
else
{
$('subm').hide();
shown = false;
}
}
document.getElementById("test").onclick = SubMenuDisplay;
答案 1 :(得分:0)
以下是我认为你想要解决的问题:
<a href="#" id="test" onclick="SubMenuDisplay();">Account</a>
<ul id="subm">
<li><a href="./account.php#login">Login</a>
</li>
<li><a href="./account.php#signup">Sign up</a>
</li>
</ul>
var shown = false;
$("#subm").hide();
function SubMenuDisplay() {
alert("Hello World!");
if (!shown) {
$('#subm').show();
shown = true;
} else {
$('#subm').hide();
shown = false;
}
}
小提琴:http://jsfiddle.net/ryanpcmcquen/wyrogc77/
JavaScript是动态类型的,因此您不需要像bool shown = false;
那样声明类型。这可以用var shown = false;
替换。 JavaScript会发现这是一个布尔值。
除此之外,您的代码只需要一点点按摩。您将id="test"
分配给li
元素,只需将其分配给a
,并将a
设置为li
样式,像:
#test {
list-style-type: bullet;
list-style-position: inside;
display: list-item;
}
答案 2 :(得分:0)
既然您决定使用jQuery,那就使用它(我的意思是,转到jquery.com并阅读the doc):
$('#test > a').click(function (e) {
e.preventDefault();
$(this).next().toggle();
});
.subm {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li id="test">
<a href="#">Account</a>
<ul class="subm">
<li><a href="./account.php#login">Login</a></li>
<li><a href="./account.php#signup">Sign up</a></li>
</ul>
</li>