如何使用带条件的javascript清除文本字段?

如何使用带条件的javascript清除文本字段?,javascript,html,Javascript,Html,我想如果我清除文本字段#t1,文本字段#d1应该清除。但最后两行不行 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.va

我想如果我清除文本字段#t1,文本字段#d1应该清除。但最后两行不行

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='';

a
是一个DOM元素,因此它将始终是
!=0
作为
=
运算符将强制它为字符串,然后为数字,该数字将为
!=0

您可能想使用
.value
属性:

var a = document.getElementById('t1').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";
    }
}
…只是众多可用选项之一。使用
+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 (或<代码>编号(STR)< /代码>)会说这是<代码>楠<代码>,因为他们考虑整个字符串,而不仅仅是第一部分。

您的调查揭示了什么?你认为问题出在函数内部的什么地方?你没有像在第一个else if中那样设置z的值。
a = parseInt(a, 10); // If you're expecting an integer, or
a = parseFloat(a);   // If it may have a fractional portion