如何使用条件运算符分配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>