JavaScript jQuery三元或.val()运算符问题

时间:2015-12-07 14:31:54

标签: javascript jquery

我有以下代码:

var result = $('#txtResult').val();
var input = $('#txtInput').val();
if (result == "0") {
    $('#txtResult').val($('#txtInput').val());
}
else {
    $('#txtResult').val($('#txtResult').val());
}

当我有“result =='0'”时,我想用输入文本框值更改它,它可以正常工作。

我的问题是为什么当我这样写的时候:

$('#txtResult').val($('#txtResult').val() == "0" ?
                    $('#txtResult').val($('#txtInput').val()) : $('#txtResult').val($('#txtResult').val()));

使用三元(问号)运算符结果文本框和jQuery的.val()它在结果文本框中显示 [object Object] 。 如果我尝试使用f11首先调试它,它工作正常,但没有调试不能正常工作。

2 个答案:

答案 0 :(得分:4)

这是因为您将jQuery对象设置为值。

您可以将其简化为:

var result = $('#txtResult').val();
$('#txtResult').val($(result == 0 ? '#txtInput' : '#txtResult').val());

作为旁注,您可能应该parsing the value as a number,以便将数字与0进行比较,而不是字符串。

var result = parseInt($('#txtResult').val(), 10);
$('#txtResult').val($(result === 0 ? '#txtInput' : '#txtResult').val());

答案 1 :(得分:4)

我认为你对inline-if声明感到困惑。

在您的示例中,您使用txtResult设置值时,将val()的值设置为jQuery返回的对象。

而不是:

$('#txtResult').val($('#txtResult').val() == "0" ?
                    $('#txtResult').val($('#txtInput').val()) : $('#txtResult').val($('#txtResult').val()));

应该是:

$('#txtResult').val($('#txtResult').val() == "0" ?
                    $('#txtInput').val() : $('#txtResult').val());