我遇到了这个基本条件陈述的问题..
当var等于9然后脚本工作但是一旦命中10及以上它指的是“低速运行”,这仅适用于5号及以下......请帮助..
谢谢。
<script type="text/javascript">
var inventory = "9";
if( inventory == "Sold Out" ){
document.write("<b>Sold Out</b>");
}else if( inventory >= "6" ){
document.write("<b>more than 5</b>");
}else if( inventory <= "5" ){
document.write("<b>running low</b>");
}else{
document.write("<b>error</b>");
}
</script>
答案 0 :(得分:2)
你应该比较数字而不是字符串,因此你的情况出错了,试试这个
<script type="text/javascript">
var inventory = 9;
if( inventory == "Sold Out" ){
document.write("<b>Sold Out</b>");
}
else if( inventory >= 6 ){
document.write("<b>more than 5</b>");
}
else if( inventory <= 5 ){
document.write("<b>running low</b>")
}
else{
document.write("<b>error</b>");
}
</script>
答案 1 :(得分:1)
正如其他人所指出的那样,问题在于,当引用数字时,它们具有不同的含义,而不是引用数字。
例如:
var a = 2;
console.log(a == "2"); //returns true
console.log(a === "2"); //returns false
我建议在大多数情况下在JavaScript中使用'严格'运算符。
可以找到文档here。
此外,您可能需要考虑使用switch语句,因为它更易于阅读和维护。
var feedback,
inventory = 9;
switch (true) {
case inventory === 'Sold Out' : feedback = 'Sold Out'; break;
case inventory >= 6 : feedback = 'more than 5'; break;
case inventory <= 5 : feedback = 'running low'; break;
default : feedback = 'error'; break;
}
document.write('<b>' + feedback + '</b>');
答案 2 :(得分:0)
你应该在比较中使用数字而不是字符串。
答案 3 :(得分:0)
您的问题是您要比较字符串而不是数字,请尝试使用inventory >= 5
var inventory = "10";
if ( inventory == "Sold Out" ){
document.write("<b>Sold Out</b>");
} else if ( inventory >= 6 ){
document.write("<b>more than 5</b>");
} else if ( inventory <= 5 ){
document.write("<b>running low</b>");
} else {
document.write("<b>error</b>");
}
答案 4 :(得分:0)
如果你想明确表示你的变量(库存)可以是一个字符串或一个数字(似乎你会接受“售完”的价值),我建议将它强制成一个数字进行比较...这应该减少/消除意外结果(如果你进行单元测试)并为其他人提供一些代码文档来关闭它们,你正在测试一个已知为字符串或数字的值。