【问题标题】:Multiple conditions on ifif 的多个条件
【发布时间】:2015-02-07 17:52:04
【问题描述】:

我有一个 8x8 表,其中包含 <td> 元素,每个元素都有自己唯一的 id(左下角有 11,右下角有 18,右上角有 88,左上角有 81)。

现在我正在编写一个 IF 语句,但我不知道如何指定条件。

假设我们有<td id="21">。这个应该符合条件,<td id="22"> 等也应该符合条件。只要<td> 在第二行。这些条件一个个手动写好像有点多余?

var elemId1 持有选中的<td> 的ID;

case "♙":
{
    if(elemId1== (conditions))
    {
        //CODE TO MOVE THIS FIGURE      
    }
}
break;`

【问题讨论】:

  • 澄清您的问题。你想检查什么?您是在问“如何输入 if”还是“我如何检查元素上的某物是否是其他东西”?

标签: javascript html if-statement html-table conditional-statements


【解决方案1】:

你最好使用data attributes

<table>
    <tr>
        <td id="81" data-row="8" data-column="1"></td>
        <td id="82" data-row="8" data-column="2"></td>
        <td id="83" data-row="8" data-column="3"></td>
        <td id="84" data-row="8" data-column="4"></td>
        ...
    </tr>
    <tr>
         <td id="71" data-row="7" data-column="1"></td>
         ...
    </tr>
    ...
</table>

那么你可以说:

if (document.getElementById(elemId1).dataset.column === "8") {
    // CODE TO MOVE THIS FIGURE
}

如果您确实想坚持对 id 中的行和列进行编码,您可以使用一些整数数学来对其进行解码:

var row = Math.floor(elemId1 / 10);
var column = elemId1 % 10;

% 是取模运算符;它给出除法的余数)

【讨论】:

    【解决方案2】:

    你可以这样做:

    if((elemId1==condition) || (elemId1==condition2) || (elemId1==condition3))//etc...
    {
        //CODE TO MOVE THIS FIGURE      
    }
    

    ||是逻辑 OR 运算符的意思是 if elemId1 == condition OR elemId1 == condition2 etc... && 是逻辑 AND 运算符...

    【讨论】:

      【解决方案3】:
      if( elemId1.substr(0,1) == "2" ) { ... }
      

      对于所有 id 以 2 开头的单元格都是如此(都在第二行)。

      【讨论】:

        【解决方案4】:

        您可以使用括号和逻辑运算符来使用多个条件。您并不总是需要使用括号,但在某些情况下它可以确定优先级。

        JavaScript 中的逻辑运算符:

        • &&(和)
        • || (或)
        • ! (不)

        以下内容为“如果 a 等于 4 且 b 等于 5”:

        if (a === 4 && b === 5)
        if ((a === 4) && (b === 5))  // this works too (extra parentheses)
        

        以下内容为“如果 a 等于 4 或 5”:

        if (a === 4 || a === 5)
        

        以下内容为“如果 a 不是 5 而 b 是 1 或 2”:

        if (a !== 5 && (b === 1 || b === 2))
        

        编辑: 澄清后,我想您是在问如何检查一个变量是否等于多个值之一?您可以使用Array.indexOf 执行此操作,它返回数组中找到给定元素的位置(如果未找到则返回-1)。然后,您可以将该方法的输出转换为布尔值(您想要这样做,因为0 表示该元素已找到,但评估为假)。

        var haystack = [1, 2, 3, 4, 5];
        var needle = 4;
        var needle_missing = 7;
        
        if (!!~haystack.indexOf(needle)) // true
        if (!!~haystack.indexOf(needle_missing)) // false
        

        如果你想在 IE8 中使用.indexOf,那么你需要一个polyfill

        【讨论】:

        • 我明白了,我把自己弄得很不清楚。我知道 JavaScript 中的逻辑运算符,我想问的是是否有办法循环条件(如果第二行有一千个 怎么办?)。我想说的是,是否可以编写 if( for(i=1;i
        猜你喜欢
        • 2016-01-20
        • 1970-01-01
        • 1970-01-01
        • 2013-09-29
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多