Javascript IF循环采用false,并使用jquery执行true循环
Javascript IF loop takes false and execute the true loop with jquery
以下是rails应用程序中的jquery代码。该代码的目的是评估#rfq_need_report的值,如果need_report为true则显示#rfq_report_language:
$(document).ready(function() {
var rpt = $('#rfq_need_report').val();
alert(rpt);
if (rpt) {
alert(rpt);
$('#rfq_report_language').show();
alert('show');
} else {
$('#rfq_report_language').hide();
alert(rpt);
alert('hide');
}
}); // end ready
此处的警报仅用于调试。rpt为false,但是alert("ow")被执行。if循环似乎为false,并决定执行true循环。有时如果循环工作,有时则不工作。是什么导致了这种奇怪的行为?谢谢
在HTML中,任何输入(如value="something"
)的值字段总是作为字符串计算。我的猜测是,在javascript中,您可以将该值设置为true或false,但实际上它被设置为字符串形式的"true"或"false"。您可以试试这个主题的答案:如何在JavaScript中将字符串转换为布尔值?
rpt可能是一个字符串,因此将其转换为布尔值将有所帮助:
if(rpt === "false") { rpt = false; } else { rpt = true; }
我必须假设$('#rfq_need_report').val()
不是在传递实际的布尔值,而是JavaScript认为的"truthy",这就是为什么if语句执行truth子句的原因。
有两种快速方法(我使用)可以将"truthy"值转换为实际布尔值:
1:var bool = !!truthy;
2:var bool = truthy === 'true'
当需要字符串值时使用第二个,当不需要字符串时使用第一个。
第一个例子可能需要解释,所以…
第一个!"not"将truthy值转换为实际布尔值,尽管与我想要的相反,第二个"not"则将其返回到应有的位置。
要了解更多truthy vs falsy的例子,只需将javascript truthy falsy
放入你最喜欢的搜索引擎并开始阅读。我个人的快速参考是:JavaScript 中的Truthy和falsy
- 在 for 循环 jQuery 中使用 one()
- 如何使用 for 循环 jquery 将相应的值附加到相应的 dom 元素
- 如何在循环jQuery中的数组中存储数据
- 循环JQuery数组
- 将值添加到相同的变量循环jQuery中
- 使用For each循环-jquery创建变量
- 在循环 jQuery 上添加元素
- 需要访问每个循环 jQuery 之外的变量
- Javascript:将循环jQuery动画放在js函数中
- 简单的循环 JQuery
- 使用日期循环 jquery 隐藏元素
- 从循环 jQuery 命名变量
- 循环jquery $.get,如何知道循环何时完成
- 需要循环 jquery
- 循环jQuery中的多个executeSql
- 编写函数来循环jquery样式库中的元素
- 从我从循环(JQuery)中收集的表中删除行
- 在for循环Jquery/Javascript中设置延迟
- 循环JQuery对象
- For循环Jquery正在创建表