比较两个字符串(jquery .text() 和文字字符串)

Compare two strings (jquery .text() and literal string)

本文关键字:字符串 text 文字 jquery 两个 比较      更新时间:2023-09-26

我试图弄清楚为什么这不起作用。我确定文本是相同的。它们都返回一个字符串。但是 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");
      }
    }
var whiteList = ['text1', 'text2', 'text3'];
$("#slider_2011 dd").filter(function() {
     return $.inArray($('h1', this).text(), whiteList) > -1;         
}).find('h2').text('text4');
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");      
}

你的if语句基本上是错误的。我看到很多人给了你解决方案。但我想向你解释为什么它是错误的。

所以,你已经给出了这样的if语句

if ($("#slider_2011 dd").eq(i).children("h1").text() === "text1" ||"文本2" ||"文本3")

JavaScript 是这样读的

if ($("#slider_2011 dd").eq(i).children("h1").text() === "text1" || true || true)

所以条件显然总是正确的。

因为javascript内部会将"text2"和"text3"转换为布尔值。当任何非空字符串转换为布尔值时,它变为 true。

if 条件中的基本缺陷。分别检查每个文本1、文本2、文本3。正确掌握基础知识。