我有一个带有<td>
元素的8x8表,每个表都有自己唯一的ID(左下角有11个,右下角18个,右上角88个,左上角81个。)
现在我正在撰写IF声明,但我不知道如何指定条件。
我们说<td id="21">
。这个应该符合条件,应该<td id="22">
等。只要<td>
在第二行。用手写这些条件似乎有点多余了?
var elemId1保存所选<td>
;
case "♙":
{
if(elemId1== (conditions))
{
//CODE TO MOVE THIS FIGURE
}
}
break;`
答案 0 :(得分:2)
您最好使用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;
(%
是模数运算符;它给出除法的余数)
答案 1 :(得分:0)
你可以这样做:
if((elemId1==condition) || (elemId1==condition2) || (elemId1==condition3))//etc...
{
//CODE TO MOVE THIS FIGURE
}
||是逻辑OR运算符意味着如果elemId1 == condition OR elemId1 == condition2等...&amp;&amp;是逻辑AND运算符......
答案 2 :(得分:0)
您可以使用括号和逻辑运算符来使用多个条件。您并不总是需要使用括号,但在某些情况下它可以确定优先级。
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
执行此操作,该0
返回找到给定元素的数组中的位置(如果未找到,则返回-1)。然后,您可以将该方法的输出转换为布尔值(您要执行此操作,因为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
表示找到该元素,但评估为falsy)。
.indexOf
如果您想在IE8中使用{{1}},那么您将使用polyfill。
答案 3 :(得分:0)
if( elemId1.substr(0,1) == "2" ) { ... }
对于id为2的所有单元格都是如此(全部在第二行)。