为什么我的javascript if-else语句不起作用?
有人能告诉我下面的代码有什么问题吗?我希望“文本”在单击按钮时可见或不可见。mystyle.css具有:为什么我的javascript if-else语句不起作用?,javascript,if-statement,Javascript,If Statement,有人能告诉我下面的代码有什么问题吗?我希望“文本”在单击按钮时可见或不可见。mystyle.css具有: #the_text { visibility: hidden; } 和我的html页面: 显示/隐藏 我想通过按下上面的按钮来隐藏这个 函数check\u this\u out(){ var vis_或_hidden=document.getElementById(“_文本”); 如果可视或隐藏。样式[“可见性”]=“隐藏” {vis_或_hidden.style[“可见性”]=
#the_text {
visibility: hidden;
}
和我的html页面:
显示/隐藏
我想通过按下上面的按钮来隐藏这个
函数check\u this\u out(){
var vis_或_hidden=document.getElementById(“_文本”);
如果可视或隐藏。样式[“可见性”]=“隐藏”
{vis_或_hidden.style[“可见性”]=“可见”}
其他的
{vis_或_hidden.style[“可见性”]=“隐藏”}
}
函数的定义存在一些问题
- 第一个是语法错误,因为条件周围需要括号
if (vis_or_hidden.style["visibility"] = "hidden")
- 第二个是,条件实际上是,而不是
注意:
如果
语句不需要布尔条件,则不会在它们之间突出显示类型错误。但是,由于无法将文字指定给,因此反转操作数可以:
if ("hidden" = vis_or_hidden.style["visibility"])
// ReferenceError: Invalid left-hand side in assignment
vs
if ("hidden" == vis_or_hidden.style["visibility"])
- 最后一个是DOM的常见问题,因为它只表示元素自己的内联样式,并且它还没有自己的
可见性。要包含从样式表继承的样式,您必须确定:
但是,请注意,getComputedStyle()
在中不受支持。为了实现跨浏览器兼容性,您必须加入
一个选择是。另一个是。但是,还有许多其他垫片和多填料可用
示例:(注意使用onclick
时的No wrap
选项)=
进行赋值,=
或==
进行比较。如果(vis_或_hidden.style[“visibility”]==“hidden”)也包含内联样式的值。对于从样式表继承的值,您必须获得。谢谢。但为什么在定义时我会得到“未捕获引用错误:签出此未定义”?谢谢你的反对票,不管是谁。很抱歉,我不是你们这些天才。@user3481992在函数
定义中的if
语句有语法错误,因此它无法用于onClick
。有一些验证器可以帮助解决问题,例如。感谢您提供全面的答案。毫无疑问,我会在头脑清醒时把它标记正确。我仍然在讲“=”和“=”,这很奇怪,因为到目前为止“=”对我有效,而“=”对我无效。@user3481992它在某种程度上仍然有效,因为赋值返回要测试的if
的赋值。因此,如果(“隐藏”)
,则条件变为。而且,由于“hidden”
是一个非空字符串,因此它被认为是真实的(如,布尔(“hidden”)==true
)。但是,条件将始终通过,因此不会执行else
块。太棒了,您的代码工作得很好,现在我将尝试理解=、==和===之间的区别。“无包装”选项是什么意思?我查看了您的JSFIDLE,在这方面看不到任何东西。@user3481992在菜单左侧的“框架与扩展”下。这是JSFIDLE特有的东西,但是默认选择的onLoad
可能与On*
属性冲突,如onclick
。啊,是的,明白你的意思了。
if ("hidden" = vis_or_hidden.style["visibility"])
// ReferenceError: Invalid left-hand side in assignment
if ("hidden" == vis_or_hidden.style["visibility"])
if (window.getComputedStyle(vis_or_hidden)["visibility"] == "hidden")