2

我目前无法使我的 IF 语句正常工作我希望选择屏蔽“ely”并选择文本框 3 或 4 的用户会自动勾选文本框 2。

这是我的 JavaScript 代码:

if(showShield.value == ("ely") && document.getElementById("cb3").checked = true; || document.getElementById("cb4").checked = true;)
    {
    document.getElementById("cb2").checked=true;
        }

这可能是错误的,因为它不起作用所以我将如何检查用户选择文本框 3 或 4。

这是我的 HTML 代码:

<html>
<head>
<script type="text/javascript" src="myJavascript.js"></script>
</head>
<body>

<select id="likeShield" onchange="showTicks()">
<option value="select1">Select</option>
<option value="yesShield">Yes</option>
<option value="noShield">No</option>
</select>

<select id="showShield" onchange="showTicks()">
<option value="select1">Select</option>
<option value="arc">Arcane</option>
<option value="ely">Elysian</option>
<option value="spec">Spectral</option>
<option value="anylist">Choose any</option>
</select>

<table border = "1">
<tr>
   <th> tickbox </th>
   <th> shield parts </th>
   <th> description </th>
   <th> cost </th>
</tr>
<tr>
<td><input type="checkbox" id="cb1"></td>
   <td> arc sigil </td>
   <td> Large magic part </td>
   <td> 5m </td>
</tr>
<tr>
<td><input type="checkbox" id="cb2"></td>
   <td> arc shield </td>
   <td> A extremely powerful magic shield </td>
   <td> 60m </td>
</tr>
<tr>
   <td><input type="checkbox" id="cb3"></td>
   <td> arc special item </td>
   <td> special element </td>
   <td> 10m </td>
</tr>
<tr>
   <td><input type="checkbox" id="cb4"></td>
   <td> elysian sigil  </td>
   <td> A sigil found by dragons </td>
   <td> 50m </td>
</tr>   
<tr>
   <td><input type="checkbox" id="cb5"></td>
   <td> elysian shield </td>
   <td> A extremely powerful ranging shield </td>
   <td> 40m </td>
</tr>   
<tr>
   <td><input type="checkbox" id="cb6"></td>
   <td> elysian special item </td>
   <td> A special attack attached to shield </td>
   <td> 25m </td>
</tr>
<tr>
   <td><input type="checkbox" id="cb7"></td>
   <td> spectral sigil  </td>
   <td> easily obtainable from goblins </td>
   <td> 4m </td>
</tr>
<tr>
   <td><input type="checkbox" id="cb8"></td>
   <td> spectral shield </td>
   <td> Impressive stats </td>
   <td> 15m </td>
</tr>
<tr>
   <td><input type="checkbox" id="cb9"></td>
   <td> spectral special item </td>
   <td> Does double damage </td>
   <td> 30m </td>
</tr>
</table>
</body>
</html> 
4

7 回答 7

3
if(showShield.value == "ely" && (document.getElementById("cb3").checked || document.getElementById("cb4").checked))//comparison
{
    document.getElementById("cb2").checked=true; //asignment
}
  1. 运算符优先级: &&之前完成,||所以你需要括号
  2. ==,不=用于比较(最好===不会自动转换类型并进行严格比较)
  3. ;是一个语句终止符,不应在其中使用。
于 2012-11-17T17:32:29.223 回答
1

if(showShield.value === "ely" && (document.getElementById("cb3").checked == true || document.getElementById("cb4").checked == true))

无需使用分号并使用 == 而不是 =。条件也需要括号。

于 2012-11-17T17:29:51.050 回答
0
if(showShield.value == ("ely") && document.getElementById("cb3").checked = true; || document.getElementById("cb4").checked = true;)

showShield.value == ("ely") && document.getElementById("cb3").checked = true;jsshowShield.value必须检查条件,并且由于运算符优先级ely而被检查,然后检查“或”语句是否被检查。cb3cb4

我们可以通过 .

    if(showShield.value == ("ely") && (document.getElementById("cb3").checked = true; || document.getElementById("cb4").checked = true))
于 2012-11-17T17:40:41.537 回答
0

javascript复选框如果其他条件

$checkbox = document.getElementById("checkBoxId").checked;

if($checkbox == true) {
    //check true
} else {
    //check false
}

jQuery复选框如果其他条件

$checkbox = $("#checkBoxid").is(":checked");

if($checkbox == true) {
     //check true
} else {
     //check false
}
于 2014-09-11T19:52:01.927 回答
0

尝试这个

if(ely.value == "ely" && (document.getElementById("checkBox3").checked ||
  document.getElementById("checkBox4").checked))
{
    document.getElementById("checkBox2").checked=true;
}
于 2012-11-17T17:31:54.840 回答
0

你可能想要:

if(ely.value == ("ely") && document.getElementById("checkBox3").checked == true || ely.value == ("ely") && document.getElementById("checkBox4").checked == true)
{
document.getElementById("checkBox2").checked=true;
    }

或者

if(ely.value == ("ely") && (document.getElementById("checkBox3").checked == true || document.getElementById("checkBox4").checked == true))
{
document.getElementById("checkBox2").checked=true;
    }

这是因为逻辑运算符有其比较顺序,就像算术乘法优先于加法一样。好吧,我是 JS 的新手,但我相信它在任何地方都是这样工作的。此外,您必须使用双等号进行比较,因为单用于分配值。

于 2012-11-17T17:32:40.890 回答
0

这里可能有很多错误(因为您在这里没有提供太多信息),但至少,而不是

document.getElementById("checkBox3").checked = true;

你应该有

document.getElementById("checkBox3").checked == true

“checkBox4”也是如此。

这里有一个快速解释为什么:

1)当您使用一个等号时,您正在设置一个值。因此,您实际上不是在测试是否checkBox3已检查,而是在告诉您要checkBox3检查。if 语句需要使用两个等号,因为它使语句成为问题而不是命令。

2) 分号仅在语句末尾是必需的。由于“if”行是一个完整的语句,因此您不希望在其中使用分号。

希望这是有道理的!

于 2012-11-17T17:35:04.500 回答