2017-01-03 5 views
-4

質問によると、ネストされた関数を呼び出すことはできません! ここにJavaScriptがあります:ネストした関数を呼び出せません

var n; 
var i = 0; 

$("#men").click(function(){ 
    $("#reshead").slideToggle("300"); 
}); 

$("#nxt").click(function() { 
    pic(i+=n); 
}); 

$(window).on("scroll", function() { 

    if($(window).scrollTop() > 50) { 
    $("#header").addClass("scroll"); 
    } else { 
    $("#header").removeClass("scroll"); 
    } 
}); 

function pic(n) { 
    if(n=1){ 
     dx1(); 
    } else if (n==2) { 
     dx2(); 
    } else if (n=3){ 
     dx3(); 
    } else{ 
     n=0; 
    } 
} 

function dx1() { 
    document.getElementById("picb").style.backgroundImage='url("src/black-belt.png")'; 
} 

function dx2() { 
    document.getElementById("picb").style.cssText+='background-image:url(src/kut.png);background-repeat:no-repeat; width:auto;height:auto;'; 
} 

function dx3() { 
    document.getElementById("picb").style.cssText+='background-image:url(src/slmb.jpg);background-repeat:no-repeat; width:auto;height:auto;'; 
} 

私は可能な限りすべてを試しました。何も起こりません。このコードは、背景画像だけが変化するスライドショーのためのものです。 jQueryで最初に試しましたが、それは起こりませんでした。だから私は普通のJavaScriptで試してみましたが、それでも動作しません。

+0

これは、CSSクラスを使用して、同じものをスタイルに何度も何度も追加しない場合です。 – epascarello

+0

jslintやjshintのようなツールを使用すると、エラーが発生しているはずです。 – epascarello

答えて

3
if(n=1) 

else if(n=3) 

それは常に最初ifに入っていますので、あなたがnに値を代入している

0

... assingmentsない比較演算子です。 ==演算子を使用してみてください:

function pic(n) { 
    if(n==1){ 
     dx1(); 
    } 
    else if(n==2){ 
     dx2(); 
    } 
    else if(n==3){ 
     dx3(); 
    } 
    else{ 
     n=0; 
    } 
} 
0

も、構文の修正で、あなたはまだ0undefinedを追加しようとしている問題に遭遇することに注意してください。それはi初めて呼び出されたときは、0nに等しい

pic(i+=n); 

undefinedに等しいです。その後、iNaNに等しくなり、n0に等しくなります。

関連する問題