【问题标题】:JavaScript jQuery ternary or .val() operator issueJavaScript jQuery 三元或 .val() 运算符问题
【发布时间】:2015-12-07 14:31:53
【问题描述】:

我有以下代码:

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 调试它,它可以正常工作,但不调试就不能正常工作。

【问题讨论】:

  • 请考虑使用if 语句,以提高可读性和未来维护者的头疼
  • 我会的。感谢您的建议。

标签: javascript jquery


【解决方案1】:

这是因为您将 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());

【讨论】:

  • 非常感谢。我是新手,如果问题很愚蠢,我深表歉意。
  • 我将值解析为数字,但在另一个函数中。感谢您的留言,感谢您的帮助。
【解决方案2】:

我认为您对 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());

【讨论】:

  • 非常感谢伙计。我是新手,如果问题很愚蠢,我深表歉意。
  • 不用道歉,我们都时不时需要一点帮助:-)
猜你喜欢
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
相关资源
最近更新 更多