无法使代码将0识别为值

时间:2018-01-11 02:54:36

标签: javascript

我正在制作一张可编辑的RPG表。对于这个特定的部分,我需要它将1_7,2_7和3_7与等式的结果进行比较,并让它选择较小的值。但是,虽然它适用于大多数情况,但它不会将0识别为值。手动输入1_7,2_7和3_7。

为了让代码将0识别为值,我该怎么做?

var x = 
this.getField("1_7").value;
var y = 
this.getField("2_7").value;
var z = 
this.getField("3_7").value;

var f = Math.floor((this.getField("Des Temp").value - 10) / 2);

var temp;

if(!x)
{
x = f;
}

if(!y)
{
y = f;
}

if(!z)
{
z = f;
}

if(x <= y && x <= z)
temp = x;
else if(y <= z)
temp = y;
else
temp = z;

if(f > temp)
f = temp;

if(f > 0){
event.value = "+" + f;
}
else{
event.value = f;
}

2 个答案:

答案 0 :(得分:1)

O是一个“假”值,所以

if(!x)

正在做它应该做的事情。空值可能是一个空字符串,因此您可以执行

if ( ! x.length )

代替。

$('#x').on( 'input', function() {
  console.log( ! $(this).val().length );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id='x' >

答案 1 :(得分:0)

因为0在javascript比较中被视为false。如果要验证字段是否包含数据,可以使用length属性。

&#13;
&#13;
var x = 0;
var y = 5;
var z = 3;


var f = 10;

if(0)
{
  console.log("0 is false");
}

if(1)
{
  console.log("1 or any number != 0 is true");
}

if(x.length)
{
  x = f;
  console.log("x is not set");
}

if(y.length)
{
  y = f;
    console.log("y is not set");
}

if(y.length)
{
  z = f;
    console.log("z is not set");
}
&#13;
&#13;
&#13;