我正在使用一个三元运算符编写简短的“ if”语句的小型脚本。代码如下:
self.checked ? psswrd[z].type = 'text' : psswrd[z].type = 'password';
这实际上表示,如果选中了输入,则将输入类型设置为“文本”,否则将其设置为密码。我觉得我在重复自己,这是错误的。
理想情况下,我想做这样的事情:
psswrd[z].type ? 'text' : 'password';
但是,如何检查正在检查的“如果”部分呢?我对这种三元方法是陌生的,因此解释将大有帮助,谢谢。
完整循环(如果需要):
for ( var j = 0; j < checkz.length; j++ ) {
var self = checkz[j];
self.onchange = function () {
for ( var z = 0; z < psswrd.length; z++ ) {
self.checked ? psswrd[z].type = 'text' : psswrd[z].type = 'password';
}
}
}
最佳答案
与?:
一样使用的三元运算符[condition] ? [code1] : [code2]
会对condition
求值,如果其值为true,它将返回code1
,否则返回code2
。 code1
和code2
都不会被评估,只是其中之一将永远不会发生。这就是为什么var abc = test == null ? "no" : test.something()
test是否为null都将起作用。
该运算符通常用于a = condition ? code1 : code2
之类的设置,那么它等效于
if (condition)
a = code1;
else
a = code2;
在您的情况下,您将必须使用
psswrd[z].type = self.checked ? 'text' : 'password';
相当于
if (self.checked)
psswrd[z].type = 'text';
else
psswrd[z].type = 'password';
一般用法的微小变化只是
condition ? code1 : code2
,这将导致执行code1或code2,并且返回值将被丢弃。或者,您也可以在
var num = 17 + (test ? -17 : 25)
之类的其他组件中使用它,如果将test评估为true,它将num设置为0,如果将false评估为num,则设置为42。关于javascript - JavaScript三元运算符用法说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17656849/