【问题标题】:Is the only way to do this an inline if statement?这样做的唯一方法是内联 if 语句吗?
【发布时间】:2012-03-31 00:11:00
【问题描述】:
var filterMinPV = $('.hidePVVol > td input:first').val();
var filterMaxPV = $('.hidePVVol > td input:last').val();

目前,如果输入框为空,则将它们设置为空字符串。我目前使用 console.log 记录这些值。

是否可以给这些值“NULL”的值,我能看到的唯一方法可能是将 if 语句放在 val() 中。但是有没有更好的方法,也许我缺少一些链接功能?

因此,如果输入框有一个值,我希望它分配给 var。如果它是一个空字符串,我希望将“NULL”分配给 var。

希望我解释得足够好!

【问题讨论】:

  • 为什么不能在登录前检查 var?检查其是否为空字符串并将其更改为 'NULL'
  • @jzworkman 试图节省代码中的行空间。这已经是一个相当大的函数了,必须检查这两个变量以及大约 20 个其他变量对我来说太肉了。
  • 您可以在下面看到我的答案,如果您希望它使用变量并且不必在行中进行两次 jquery 调用,请在记录数据的位置添加内联检查。
  • 谢谢大家的超级快速和正确的答案。你们都帮助我成为一个更好的程序员!

标签: jquery


【解决方案1】:

当您记录值时:

logger.log(filterMinPV == '' ? filterMinPV : 'NULL');
logger.log(filterMaxPV == '' ? filterMaxPV : 'NULL');

【讨论】:

    【解决方案2】:
    var filterMinPV = $('.hidePVVol > td input:first').val() || null;
    var filterMaxPV = $('.hidePVVol > td input:last').val() || null;
    

    这并不是说它有任何帮助,因为您仍然需要在某处测试null,您不妨改为测试空字符串。

    您可能希望避免为这个复杂的选择器查询相同的元素集两次:

    var inputs =  $('.hidePVVol > td input'),
        filterMinPV = inputs.first().val() || null,
        filterMaxPV = inputs.last().val() || null;
    

    【讨论】:

    • 如果值是字符串'0',那不是将值设置为null吗?
    • 不,因为只有空字符串是假值!!'0' //true !!'' //false
    • 那么比 PHP 好很多。 :)
    • 虽然,数字0会失败。
    • .val 的结果是String,而不是解析后的Number
    【解决方案3】:
    var filterMinPV = $('.hidePVVol > td input:first').val() !== '' ? $('.hidePVVol > td input:first').val() : null;
    var filterMaxPV = $('.hidePVVol > td input:last').val() !== '' ? $('.hidePVVol > td input:last').val() : null;
    

    【讨论】:

    • :) 我喜欢内联条件。
    • @MichaelRushton 我不明白它是如何工作的,但我很高兴它确实如此。有什么作用?做。将尝试在 jquery.com 上找到它。再次感谢您
    • 它是内联条件运算符。条件是?之前的语句,true选项在:之前,false选项在之后
    • variable = [condition] ? [if true] : [if false]
    • 啊,谢谢你们,直到现在我才知道那是可能的。 :)
    猜你喜欢
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2013-09-11
    • 2019-09-02
    • 2014-10-08
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    相关资源
    最近更新 更多