以下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))
将thiswide
与Number(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)