2013-02-26 2 views
1

соответствующий HTML:JavaScript, если оператор всегда возвращает истинное

<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"); 
} 

х передается из кнопок мыши на калькуляторе. Оператор if возвращает true, даже когда info.className - это нечто иное, чем digit/operand. Что мне нужно изменить в инструкции if, чтобы он возвращал false?

ответ

1
if (info.className === "digit" || info.className === "operand") 
+0

спасибо много. Это сделал трюк !!! – qb1234

4

Вы не используете корректный оператор ||.

Оператор || используется для ИЛИ два значения. Кажется между двумя значениями.

Из вашего примера:

ПЕРВЫЙ он проверяет левую сторону вашего состояния:

info.className === "digit"

If истинный, оператор || возвращает истинный (это не оценить правую сторону).

В противном случае он оценивает правую сторону вашего состояния:

"operand"

Это ВСЕГДА оценки к истинной, потому что строка «операнд» делает НЕ равняются falsey value.

Чтобы это исправить, вам нужно использовать правильное выражение с обеих сторон оператора ||:

if (info.className === "digit" || info.className === "operand") { 
    alert("Yay"); 
} 
0

строка интерпретируется как логическое значение всегда возвращает истину.

если (info.className === "цифра" || "операнд") должен быть если (info.className == "цифра" || info.className == "операнд")

Смежные вопросы