我的if if else不能正常工作。我有1 if
1 else if
和1 else
。当函数运行时,即使条件为" false"。
这是JavaScript:
function onSearch(){
var site;
document.getElementById('bar').value = site;
//These are not the actuall links since it's not the actuall code.
if (site === "Google" || "google"){
location.href = "http://www.google.com";
}
else if (site === "Youtube" || "youtube"){
location.href = "http://www.youtube.com";
}
else{
document.getElementById("SearchFail01").innerHTML =
"The country " + site + " does not exist";
}

<!-- Here is the HTML -->
<input type='search' id='bar' list='countries' placeholder='Search..'>
<p id="SearchFail01"></p>
&#13;
答案 0 :(得分:3)
在Javascript中,条件语句中的字符串被视为True。 &#34; ||&#34;操作员不会按照您尝试使其工作的方式工作,因此您必须将其拼写出来。
if (site === "Google" || site === "google"){
location.href = "http://www.google.com";
}
else if (site === "Youtube" || site === "youtube"){
location.href = "http://www.youtube.com";
}
else{
document.getElementById("SearchFail01").innerHTML =
"The country " + site + " does not exist";
}
编辑:
我也注意到这一行:
document.getElementById('bar').value = site;
如果您想将栏的值分配给网站,则可能应该翻转
site = document.getElementById('bar').value;
答案 1 :(得分:1)
double pipe无法正常运作。这是它应该如何使用。
var foo = someVar || "foo";
不得在if if that that
在您的情况下,您只需lowercase该网站并使用一个===
if (site.toLowerCase() === "google") {
location.href = "http://www.google.com";
}
答案 2 :(得分:1)
您可能还想考虑使用开关。
switch (site) {
case "Google":
case "google":
location.href = "http://www.google.com";
break;
case "Youtube":
case "youtube":
location.href = "http://www.youtube.com";
break;
default:
document.getElementById("SearchFail01").innerHTML = "The country " + site + " does not exist";
break;
}
答案 3 :(得分:0)
如果你的 if 和 endif 条件,我相信你有逻辑问题。
当您在JavaScript中有2个或更多条件时,请使用 OR (||)或 AND (&amp;&amp;)运算符分隔,每种情况下的比较。
而不是:
if (site === "Google" || "google"){
你必须写:
if (site === "Google" || site === "google"){
而不是:
else if (site === "Youtube" || "youtube"){
你必须写:
else if (site === "Youtube" || site === "youtube"){
希望这有用!
干杯队友!