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

ここにはかなりの誤りがあるかもしれません (ここではあまり情報を提供していないため)。

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

あなたが持っている必要があります

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

「checkBox4」も同様です。

その理由を簡単に説明します。

1) 等号を 1 つ使用すると、値が設定されます。したがってcheckBox3、チェックされているかどうかをテストする代わりに、本質的にチェックされるように指示checkBox3しています。if ステートメントでは、ステートメントがコマンドではなく質問になるため、2 つの等号を使用する必要があります。

2) セミコロンはステートメントの最後にのみ必要です。「if」行は 1 つのステートメント全体であるため、その中にセミコロンは必要ありません。

それが理にかなっていることを願っています!

于 2012-11-17T17:35:04.500 に答える
0

javascript チェックボックス if else 条件

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

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

jQuery チェックボックス if else 条件

$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
if(showShield.value == ("ely") && document.getElementById("cb3").checked = true; || document.getElementById("cb4").checked = true;)

showShield.value == ("ely") && document.getElementById("cb3").checked = true;js は条件をshowShield.value必ずチェックelycb3、演算子の優先順位によりチェックされ、「OR」ステートメントcb4がチェックされていることをチェックしました。

によってこれを解決できます。

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