1

対応するhtml:

<html>
<title></title>
<head>

</head>
<body>
<FORM NAME="Calculator">
<TABLE BORDER=4>
<TR>
<TD>
<input type="text"   name="Input" Size="22" value="">
<input type="text" name="notepad" value="">
<br>
</TD>
</TR>
<TR>
<TD>
<INPUT TYPE="button" NAME="one"   VALUE="  1  " class ="digit" >
<INPUT TYPE="button" NAME="two"   VALUE="  2  " class ="digit" >
<INPUT TYPE="button" NAME="three" VALUE="  3  " class ="digit" >
<INPUT TYPE="button" NAME="plus"  VALUE="  +  " class ="operand">
<br>
<INPUT TYPE="button" NAME="four"  VALUE="  4  " class ="digit">
<INPUT TYPE="button" NAME="five"  VALUE="  5  " class ="digit">
<INPUT TYPE="button" NAME="six"   VALUE="  6  " class ="digit">
<INPUT TYPE="button" NAME="minus" VALUE="  -  " class="operand">
<br>
<INPUT TYPE="button" NAME="seven" VALUE="  7  " class ="digit">
<INPUT TYPE="button" NAME="eight" VALUE="  8  " class ="digit">
<INPUT TYPE="button" NAME="nine"  VALUE="  9  " class ="digit">
<INPUT TYPE="button" NAME="times" VALUE="  x  " class ="operand">
<br>
<INPUT TYPE="button" NAME="clear" VALUE="  c  " class ="special">
<INPUT TYPE="button" NAME="zero"  VALUE="  0  " class ="digit">
<INPUT TYPE="button" NAME="Execute"  VALUE="  = " class ="solve">
<INPUT TYPE="button" NAME="div"   VALUE="  /  " class ="operand">
<br>
</TD>
</TR>
</TABLE>
</FORM>

<script type = "text/javascript" src="C:\Users\Quonn\Desktop\QBJS\calculatorjs.js">
</script>
</body>
</html> 

JavaScript:

document.onclick = function(x) {
  var info = x.target;
  if (info.className === "digit" || "operand")
  {
    addDigit();
  }
  else {
    math();
  }
}

function addDigit() {
  alert("x");
}

function math() {
  alert("y");
}

x は電卓のボタン クリックから渡されます。if ステートメントは、info.className が数字/オペランド以外の場合でも true を返します。false を返すには、if ステートメントで何を変更する必要がありますか?

4

3 に答える 3

4

||演算子を正しく使用していません。

||演算子は、2つの値のORに使用されます2つの値の間に表示されます。

あなたの例から:

最初にそれはあなたの状態の左側をチェックします:

info.className === "digit"

trueの場合、||演算子はtrueを返します(右側は評価されません)。

それ以外の場合は、状態の右側を評価します。

"operand"

文字列「オペランド」は偽のと等しくないため、これは常にtrueと評価されます

||これを修正するには、演算子の両側で正しい式を使用する必要があります。

if (info.className === "digit" || info.className === "operand") {
    alert("Yay");
}
于 2013-02-26T01:53:05.567 に答える
1
if (info.className === "digit" || info.className === "operand")
于 2013-02-26T01:53:09.987 に答える
0

ブール値として解釈される文字列は常にtrueを返します。

if(info.className === "digit" || "operand")はif(info.className == "digit" || info.className == "operand")である必要があります

于 2013-02-26T01:53:56.073 に答える