我有以下代码:
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首先调试它,它工作正常,但没有调试不能正常工作。
答案 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());