这是我的职责
function open() {
document.getElementById("main").style.marginLeft = "20%";
document.getElementById("mySidebar").style.width = "20%";
document.getElementById("mySidebar").style.display = "block";
document.getElementById("openNav").style.display = 'inline-block';
}
function close() {
document.getElementById("main").style.marginLeft = "0%";
document.getElementById("mySidebar").style.display = "none";
document.getElementById("openNav").style.display = "inline-block";
}
function Test() {
var item = document.getElementById("main").style.marginLeft ="";
if (item = "0%")
{
w3_open()
item = document.getElementById("main").style.marginLeft = "20%";
} else if (item = "20%")
{
w3_close()
}
}
第一部分工作完美,但第二次点击后没有发生。
我不知道怎么了,有人能给我一些建议吗?
///更新
单击此按钮后:
<button id="openNav" class="w3-button w3-teal w3-xlarge" onclick="Test()">☰</button>
我可以打开侧边栏,但再次单击后无法关闭。:/
4条答案
按热度按时间h7wcgrx31#
这里有很多问题,包括在应该执行比较时赋值(在一些评论和其他回答中提到)。
即使语法是固定的,我也怀疑该函数永远不会工作,因为
marginLeft
值从未被设置为开始,这意味着open()
和close()
都不会被调用,因为它们只有在找到特定值时才被调用。在
Test()
方法中,只需一次求值,一切都可以简化。cngwdvgl2#
您需要在样式表中将id为“main”的元素的默认marginLeft设置为0%。然后按如下所示更改您的函数:
vtwuwzda3#
item
永远不会等于"0%"
,因为您在此处专门将其设置为""
:这就是为什么它总是转到else语句。
我还注意到你的if else语句有点乱--你需要用
==
而不是=
。你的if语句当前正在赋值item = "0%"
,但你想让它计算ifitem == "0%"
。所以这实际上是它总是打开的另一个原因--因为在if语句中赋值基本上总是计算为true。请尝试修复这些问题,并让我知道代码是否有效还有一个注意事项-
w3_open()
和w3_close()
应该只是open()
和close()
00jrzges4#
我希望能成功
如果没有,请告诉我
首先,为什么你写this.as,它们在打开和关闭功能上都是一样的?
在
请尝试使用上述注解。