以下javascript代码完全可以实现我想要的功能:

function setDistances() {
var distances = [];
    //get values of ten numeric HTML fields
for (var i = 0; i < 10; i++) {
   var thiswide = document.getElementById("dist"+i).value;
      //This value is a string, despite coming from a numeric field.
   if (thiswide = Number(thiswide)){      //excluding blanks
      distances.push(thiswide);        //putting value in an array
 }} }


只能这样做是因为我犯了一个错误。如果我写了if (thiswide == Number(thiswide)),那么它将无法排除空格,因为javascript将“”等于0,这是我在注意到错误之后发现的。

那么if (thiswide = Number(thiswide))如何排除空格?

最佳答案

if (thiswide == Number(thiswide))thiswideNumber(thiswide)的结果进行比较。对于'':Number('')结果为0和0 == '',因为宽松的等号(==)允许类型转换。 (0 === ''将返回false)

对于if (thiswide = Number(thiswide)),将计算Number(thiswide),将其结果分配给变量thiswide,然后将该变量(数字)布尔化。对于数字值,0为假(NaN也是如此),其他所有值均为true。因此,不会添加所有解析为0的内容。由于Number('')== 0,因此if的值为false。

步骤:Number('')的结果为0,此值的取值为0,其余值为if(0),其解释为if(false)

07-24 14:18