0

我的代码很简单。我希望用户能够输入餐厅名称并让我的函数告诉他们该餐厅是否供应可口可乐或百事可乐产品。一个小时前它工作正常,但停止工作。现在,无论您输入什么,它都会显示作品“Pepsi”。我的猜测是 if 语句有问题。

<html>

<noscript><b><center><font size="16">This app requires JavaScript to be enabled. Enable JavaScript on your browswer to make it work.</font></center></b></noscript>

<center>
<form onsubmit="popproducts()">

<br><br><br><br><br><br><br><br><br>
<input id="textbox" type="text" style="height: 100px; width: 500px" value=""></input>
</br></br></br></br></br></br></br></br></br>

</form>
</center>

<script type="text/javascript">

function popproducts()
{
 if(document.getElementById('textbox').value == "Cougars" || "Kane County Cougars" || "Cougars Baseball")
 {
  document.write('<center><br><font color="#0000FF" size=20></b>Pepsi</b></font></br></center>');
  document.write('<br><br><center><form><input type="button" style="height: 100px; width: 100px" value="Back" onClick="history.go(-1);return true;"></form></center></br></br>');
 }
 if(document.getElementById('textbox').value == "Burge" || "Iowa" || "University of Iowa")
 {
  document.write('<center><br><font color="#FF0000" size=20><b>Coke</b></font></br></center>');
  document.write('<br><br><center><form><input type="button" style="height: 100px; width: 100px" value="Back" onClick="history.go(-1);return true;"></form></center></br></br>');
 }
}

</script>

</html>
4

5 回答 5

4

这是行:

if(document.getElementById('textbox').value == "Cougars" || "Kane County Cougars" || "Cougars Baseball")

应该是:

if(document.getElementById('textbox').value == "Cougars" || document.getElementById('textbox').value == "Kane County Cougars" || document.getElementById('textbox').value == "Cougars Baseball")

第一部分评估为truefalse取决于您键入的内容,但第二部分和第三部分将始终评估为true

于 2012-12-27T23:50:48.950 回答
1

这是你的问题:

if(document.getElementById('textbox').value == "Cougars" || "Kane County Cougars" || "Cougars Baseball")

当您有一个带有or运算符的if语句时,praser 将其解释为:||

if(doc....value == "Cougars || "Kane Country Cougars" != false...)

换句话说,if 语句始终为,因为字符串"Kane Country Cougars"不为假。要修复它,您应该这样做:

var val = document.getElementById('textbox').value;
if(val == "Cougars" || val == "Kane County Cougars" || val == "Cougars Baseball")
于 2012-12-27T23:51:45.107 回答
1

所有其他答案都很好,但这是我通常的做法:

var value = document.getElementById('textbox').value;

if ( /^Cougars|Kane County Cougars|Cougars Baseball$/.test( value ) ) {
  ...
}
于 2012-12-27T23:56:33.953 回答
0

||错误地使用了运算符。如果你想检查一个值是否等于多个值之一,你必须明确地传达它。例如:

if ( a == b || a == c || a == d )

以其他方式执行此操作会导致您遇到意外行为。

于 2012-12-27T23:51:22.463 回答
0

尝试这个,

var value = document.getElementById('textbox').value;
if (value == 'Cougars' || value == 'Kane County Cougars' || value == 'Cougars Baseball')
于 2013-01-01T08:00:18.257 回答