0

私のコードはとてもシンプルです。ユーザーがレストラン名を入力して、そのレストランがコーラとペプシのどちらの製品を提供しているかを関数に伝えられるようにしたいと考えています。1時間前は問題なく動作していましたが、動作しなくなりました。これで、何を入力しても「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")

最初の部分は入力内容に応じてtrueまたはとして評価されますが、2 番目と 3 番目の部分は常に として評価されます。falsetrue

于 2012-12-27T23:50:48.950 に答える
1

他のすべての答えは問題ありませんが、私が通常行う方法は次のとおりです。

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

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

これはあなたの問題です:

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

or演算子を含むifステートメントがある場合、praser はそれを次のように解釈します。||

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

つまり、文字列が false ではないため、if ステートメントは常にtrueです。"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 に答える
0

演算子の使い方が||間違っています。値が多くの値の 1 つと等しいかどうかを確認したい場合は、それを明示的に伝える必要があります。例えば:

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 に答える