我有一个奇怪的问题:我的条件不适用于javascript:/
这是我的代码:
var myposition = $("#audioWelcome").data("myposition");
/* condition */
if (myposition == "true") {
....
}
这是不正确的?看我的例子:http://jsfiddle.net/qqK5J/2/条件不起作用和html();或data();不起作用。
什么是不正确的?
答案 0 :(得分:4)
回答你的问题:
if (myposition == "true") {
无法正常工作,因为myposition
是布尔值true
,它不等于字符串值{{1 }}。
您可能想知道为什么"true"
是一个布尔值。那是因为jQuery converts it to a boolean:
每次尝试都将字符串转换为JavaScript值(包括布尔值,数字,对象,数组和null)。
所以你真正需要做的就是改变你的代码来设置布尔值而不是字符串并相应地调整条件:
myposition
或更短:
if (myposition) {
$(this).html("afficher le lecteur");
$('#audioWelcome').data('myposition', false);
} else {
$(this).html("cacher le lecteur");
$('#audioWelcome').data('myposition', true);
}
答案 1 :(得分:1)
删除了双引号:
if (myposition == true) {
更新JSFiddle:
更新:
if (myposition == true) {
$(this).html("afficher le lecteur");
$('#audioWelcome').data('myposition', false);
} else {
$(this).html("cacher le lecteur");
$('#audioWelcome').data('myposition', true);
};
更新了小提琴:
答案 2 :(得分:1)
很棒的问题!
当设置为属性时,似乎javascript混淆了“true”和“false”值,
@Kyo建议在某种程度上删除双引号。点击3次后,代码停止按预期运行。
@ user3391179的解决方案似乎根本不起作用......
在toString
上使用$("#audioWelcome").data("myposition")
方法会使“true”/“false”(字符串)值按预期方式工作。
代码:
var myposition = $("#audioWelcome").data("myposition").toString();
/* changements via onclick */
if (myposition == "true") {
$(this).html("afficher le lecteur");
$('#audioWelcome').data('myposition', false);
} else if (myposition == "false") {
$(this).html("cacher le lecteur");
$('#audioWelcome').data('myposition', true);
};
答案 3 :(得分:0)
最好放弃== true。人们不会认为你是VB5开发人员
if (myposition){}