如何使用条件运算符分配ID?
How to use the conditional operator to assign an ID?
我在一个页面上有四个表单,我想为所有表单分配一个密码验证函数。我想获取当前密码字段的ID,做进一步的验证。
我得到当前输入密码字段的 ID,如下所示:
var id = $(this).attr('id');
现在我想使用三进制 if
来检查 ID 并为变量赋值。例如:
var a
if id==1
a= "a";
else if id==2
a= "b";
else if id==3
a = "c"
else if id==4
a = "d"
感谢任何帮助。
你指的是这个三元运算符:
var value = (condition)
? 'result if condition is true'
: 'result if condition is false';
我觉得用对象还是switch
应该更清楚。
例如:
var values = {
1: 'a',
2: 'b',
3: 'c',
4: 'd',
}
var id = $(this).attr('id');
var result = values[ id ] ? values[ id ] : 'default';
// Alternative syntax using the || operator
var result = values[ id ] || 'default';
使用 switch
语句。
var id = $(this).attr('id');
var result = getValue( id );
function getValue( id ) {
switch( id ) {
case 1: return 'a';
case 2: return 'b';
default: return 'default value';
}
}
如果你真的想使用三元运算符:
var id = $(this).attr('id');
var a = (id==1) ? "a" : (id==2) ? "b" : (id==3) ? "c" : (id==4) ? "d" : undefined;
尽管如果您需要对同一个变量进行多次这样的比较,使用 switch
将是更好的选择:
var a;
switch ($(this).attr('id')) {
case 1:
a = "a";
break;
case 2:
a = "b";
break;
case 3:
a = "c";
break;
case 4:
a = "d";
break;
}
如果 id 的值确实是连续的数字,您甚至可以使用数组代替:
var id = $(this).attr('id');
var a = [, "a", "b", "c", "d"][+id];
var something = ["a", "b", "c", "ddddd"];
$("form").on("submit", function(evt) {
evt.preventDefault();
var $password = $(this).find("[name='password']");
var bla = something[ +$password[0].id - 1 ]; // -1 since it's index (0) based
console.log(bla)
});
<form>
<input id="1" type="password" name="password" placeholder="Password">
<input type="submit">
</form>
<form>
<input id="3" type="password" name="password" placeholder="Password">
<input type="submit">
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
我在一个页面上有四个表单,我想为所有表单分配一个密码验证函数。我想获取当前密码字段的ID,做进一步的验证。
我得到当前输入密码字段的 ID,如下所示:
var id = $(this).attr('id');
现在我想使用三进制 if
来检查 ID 并为变量赋值。例如:
var a
if id==1
a= "a";
else if id==2
a= "b";
else if id==3
a = "c"
else if id==4
a = "d"
感谢任何帮助。
你指的是这个三元运算符:
var value = (condition)
? 'result if condition is true'
: 'result if condition is false';
我觉得用对象还是switch
应该更清楚。
例如:
var values = {
1: 'a',
2: 'b',
3: 'c',
4: 'd',
}
var id = $(this).attr('id');
var result = values[ id ] ? values[ id ] : 'default';
// Alternative syntax using the || operator
var result = values[ id ] || 'default';
使用 switch
语句。
var id = $(this).attr('id');
var result = getValue( id );
function getValue( id ) {
switch( id ) {
case 1: return 'a';
case 2: return 'b';
default: return 'default value';
}
}
如果你真的想使用三元运算符:
var id = $(this).attr('id');
var a = (id==1) ? "a" : (id==2) ? "b" : (id==3) ? "c" : (id==4) ? "d" : undefined;
尽管如果您需要对同一个变量进行多次这样的比较,使用 switch
将是更好的选择:
var a;
switch ($(this).attr('id')) {
case 1:
a = "a";
break;
case 2:
a = "b";
break;
case 3:
a = "c";
break;
case 4:
a = "d";
break;
}
如果 id 的值确实是连续的数字,您甚至可以使用数组代替:
var id = $(this).attr('id');
var a = [, "a", "b", "c", "d"][+id];
var something = ["a", "b", "c", "ddddd"];
$("form").on("submit", function(evt) {
evt.preventDefault();
var $password = $(this).find("[name='password']");
var bla = something[ +$password[0].id - 1 ]; // -1 since it's index (0) based
console.log(bla)
});
<form>
<input id="1" type="password" name="password" placeholder="Password">
<input type="submit">
</form>
<form>
<input id="3" type="password" name="password" placeholder="Password">
<input type="submit">
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>