-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」をブール値に変換するためです。空でない文字列がブール値に変換されると、true になります。

于 2013-09-19T07:55:40.693 に答える
0

if 条件の基本的な欠陥。text1、text2、text3 ごとに個別に確認してください。基本を正しく理解しましょう。

于 2013-09-19T07:41:00.307 に答える