【问题标题】:How to use the conditional operator to assign an ID?如何使用条件运算符分配 ID?
【发布时间】:2018-11-04 05:10:22
【问题描述】:

我在一个页面上有四个表单,我想为所有表单分配一个密码验证功能。我想获取当前密码字段的 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 a = "abcd"[id-1]
  • 为什么不直接使用一个对象呢? const obj = {1: "a", 2: "b", 3: "c", 4: "d"}; var a = obj[id];.

标签: javascript jquery if-statement conditional-operator


【解决方案1】:

您指的是三元运算符:

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';
    }
}

【讨论】:

  • 对象更高效(大约O(1) 访问),绑定可以在运行时修改,它产生更清晰的代码。所以去对象吧。
  • 非常感谢大家:) 帮了我很多
【解决方案2】:

如果你真的要使用三元运算符:

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];

【讨论】:

    【解决方案3】:

    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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2012-07-03
      • 1970-01-01
      • 2018-06-15
      • 2010-09-28
      相关资源
      最近更新 更多