Javascript if语句问题

时间:2012-10-31 19:07:00

标签: javascript

我遇到了这个基本条件陈述的问题..

当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> 

5 个答案:

答案 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

示例:http://jsfiddle.net/UwGGg/

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)

如果你想明确表示你的变量(库存)可以是一个字符串或一个数字(似乎你会接受“售完”的价值),我建议将它强制成一个数字进行比较...这应该减少/消除意外结果(如果你进行单元测试)并为其他人提供一些代码文档来关闭它们,你正在测试一个已知为字符串或数字的值。