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