a
是一个DOM元素,所以它总是会!= 0
为!=
运营商将其强制为一个字符串,然后一个数字,那号码将是!= 0
。
你可能想用.value
属性:
var a = document.getElementById('t1').value;
但你还是有一个问题:输入的value
始终是一个字符串。在JavaScript中,==
和!=
运营商进行类型强制转换,""
为==
0
。所以你的第三个陈述z=''
永远不会被达到。
可以使用严格平等运营商要弄清楚这是怎么回事:
var a = document.getElementById('t1').value;
var z = document.getElementById('d1');
if (a === "") { // <== Note! === rather than ==
z.value = "";
} else {
a = +a; // Convert to number intentionally
if (a != 0) {
var y = a * 100;
y = y || 0;
z.value = y.toFixed(2);
} else if (a == 0) {
z.value = "0";
}
}
的严格平等(===
)和不平等(!==
)运营商不做强制类型转换,所以虽然"" == 0
为真,"" === 0
为假。
那行,我转换成一个数字:
a = +a;
...只是现有的许多选项之一。使用+str
转换为数字是最严格的方式,但您无法直接控制数字库。你也可以使用:
a = parseInt(a, 10); // If you're expecting an integer, or
a = parseFloat(a); // If it may have a fractional portion
...假设你想基数10(十进制),但请注意,忽略尾随字符等parseInt("123laksdjflk", 10)
是123
。相反,+str
(或Number(str)
)会说这是Nan
,因为他们考虑整个字符串,而不仅仅是第一部分。
你的调查揭示了什么?功能里面你认为问题在哪里? – Cristik
另外,你是否粘贴了整个功能?我没看到右大括号。 – Cristik
如果你没有像第一个其他的那样设置z的值。 – BSMP