2015-05-12 85 views
-1

我想如果我清除文本字段#t1,文本字段#d1應該清除。但最後兩行不這樣做....如何使用JavaScript條件清除文本字段?

function utl() 
{ 

    var a = document.getElementById('t1'); 
    var z = document.getElementById('d1'); 
    if (a!=0) 
     { 
      var y = parseFloat(a.value) * 100; 
      y = y || 0; 
      z.value = y.toFixed(2); 
     } 
    else if (a==0) 
     z.value = 0; 
    else if (a=='') 
     z=''; 
+2

你的調查揭示了什麼?功能裏面你認爲問題在哪裏? – Cristik

+0

另外,你是否粘貼了整個功能?我沒看到右大括號。 – Cristik

+0

如果你沒有像第一個其他的那樣設置z的值。 – BSMP

回答

1

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,因爲他們考慮整個字符串,而不僅僅是第一部分。