【问题标题】:How to check for truthy values but without skipping the 0?如何检查真实值但不跳过 0?
【发布时间】:2019-05-31 15:45:03
【问题描述】:

我有一个盒子的计算脚本,只有一个小问题:我不能让条件 A) 和 B) 同时工作。

A) 如果我留下 公里数 ,我希望计算脚本也提供 空输出。 p>

B) 如果我填写 0 作为公里数,我希望计算脚本将 0 作为 0 strong>输出。

(框被格式化为数字,0 将始终显示为“0,00”)

有人能看出我的错误吗?

var v1 = +getField("amount_km").value;

if (v1 || v1 === 0) {
    event.value = 0.3 * (v1);
}
else {
    event.value = "";
}

【问题讨论】:

  • 为什么有一个+? +getField("amount_km").value;
  • @TKoL 将字符串转换为数字。
  • +'' 导致0,这将属于第一个 if,而不是 else,导致您的 A 标准为假。在进行任何数字比较/转换之前,您应该考虑检查该值是否存在
  • 是的,在 A if 语句中执行 +getValue()。
  • @Taplar 完美。删除 + 就可以了。我对编程一无所知,所以给出的信息是多余的,现在它就像一个魅力,非常感谢! :-)

标签: javascript pdf adobe


【解决方案1】:

这段代码处理空字符串的情况:

var v1 = getField("amount_km").value;
var numV1 = +v1;

if (v1 && (numV1  || numV1 === 0)) {
    event.value = 0.3 * (v1);
} else {
    event.value = "";
}

【讨论】:

  • 鉴于 else 仅在值为空白时才会发生,if 条件可以简化为 v1.trim()
  • 不,因为他们可以将字母放入输入中。如果他们输入“abc”,他可能希望 else 运行,它目前正在运行
  • 不幸的是,此脚本提供的结果与之前使用的相同:-( 因此,如果我输入 0 作为公里数,则该框的计算结果为空
  • @TKoL 该要求未包含在 OP 中,并且会造成范围蔓延。
  • @Taplar 我的解决方案很简单,并且可以处理非数字字符串的附加情况。这取决于他
猜你喜欢
  • 2015-02-17
  • 1970-01-01
  • 2017-10-11
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2018-09-10
  • 2022-11-30
相关资源
最近更新 更多