我试图弄清楚为什么这不起作用。我确定文字是一样的。他们都返回一个字符串。但if语句总是如此,即使它显然是假的!...有谁知道我做错了什么?
for (var i = 0; i < $("#slider_2011 dd").length; i++) {
if ($("#slider_2011 dd").eq(i).children("h1").text() === "text1" || "text2" || "text3"){
$("#slider_2011 dd").eq(i).children("h2").text("text4");
}
}
答案 0 :(得分:4)
var whiteList = ['text1', 'text2', 'text3'];
$("#slider_2011 dd").filter(function() {
return $.inArray($('h1', this).text(), whiteList) > -1;
}).find('h2').text('text4');
答案 1 :(得分:2)
if ($("#slider_2011 dd").eq(i).children("h1").text() === "text1" || "text2" || "text3") // will always return true as in or(||) condition you just checked for "text1" (non negative) Which will be considered as true always.
所以你应该比较你的文字值,
var txt = $("#slider_2011 dd").eq(i).children("h1").text();
if (txt === "text1" || txt === "text2" || txt === "text3") {
$("#slider_2011 dd").eq(i).children("h2").text("text4");
}
答案 2 :(得分:1)
您的 if 语句基本上是错误的。 我看到很多人给了你解决方案。但我想解释你为什么错了。
所以,你已经给出了这样的if语句
if($(“#slider_2011 dd”)。eq(i).children(“h1”)。text()===“text1”||“text2”||“text3”)
javascript就像这样读取
if($(“#slider_2011 dd”)。eq(i).children(“h1”)。text()===“text1”|| true || true)
所以情况显然是真实的。
因为javascript内部会将“text2”和“text3”转换为布尔值。当任何非空字符串转换为布尔值时,它变为真。
答案 3 :(得分:0)
if条件下的基本缺陷。单独检查每个text1,text2,text3。 掌握基础知识。