-4

我试图弄清楚为什么这不起作用。我确定文字是一样的。他们都返回一个字符串。但是 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");
      }
    }
4

4 回答 4

4
var whiteList = ['text1', 'text2', 'text3'];

$("#slider_2011 dd").filter(function() {
     return $.inArray($('h1', this).text(), whiteList) > -1;         
}).find('h2').text('text4');
于 2013-09-19T07:44:16.967 回答
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");      
}
于 2013-09-19T07:37:16.743 回答
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”转换为布尔值。当任何非空字符串转换为布尔值时,它变为真。

于 2013-09-19T07:55:40.693 回答
0

if条件的基本缺陷。分别检查每个 text1、text2、text3。正确掌握基础知识。

于 2013-09-19T07:41:00.307 回答