2017-07-27 4 views
1

後続に変数の値を保持します。は、私がクリックされたハイパーリンクのクラスを取得し、<em>プレイ</em>と<em>一時停止アイコンそのハイパーリンク内の特定のdivの</em>を切り替え、このコードを、持っている機能

var mediaClicked_class = ""; 
 
var previousMediaClicked_class = ""; 
 
var pauseIconStatus = null; 
 

 
// Get class of clicked hyperlink 
 
function mediaClick_class(clicked_class) { 
 
    alert(pauseIconStatus + " : Initial pause Icon status"); 
 
    mediaClicked_class = clicked_class; // when i click map hyperlink, pass respective class into variable 
 

 
    preEmptivePlay(mediaClicked_class, pauseIconStatus); 
 
} 
 

 
function preEmptivePlay(mediaClicked_class, pauseIconStatus) { 
 
    if (pauseIconStatus == null) { //global var. init. 
 
    //toggle class of currently clicked div.icon 
 
    $("div.icon_" + mediaClicked_class).toggleClass("playicon pauseicon"); 
 

 
    var pauseIconAvailability = $("div.icon_" + mediaClicked_class).hasClass("pauseicon"); 
 

 
    if (pauseIconAvailability) { //true - playing 
 
     pauseIconStatus = 1;; //pause icon is active i.e. song is playing 
 
     previousMediaClicked_class = mediaClicked_class; //store current class to be called later 
 
     alert(pauseIconStatus + " : Current icon status"); 
 
    } else { //false - not playing 
 
     pauseIconStatus = 0;; //pause icon is inactive i.e. song is not playing 
 
     previousMediaClicked_class = mediaClicked_class; 
 
     alert(pauseIconStatus + " : Current icon status"); 
 

 
    } 
 
    } 
 
}

問題ではなく、保持、私はハイパーリンクをクリックすると、この関数が呼び出さ、4行目はpauseIconStatusnullとして毎回初期化されていることである:私は、JavaScriptのロジックに問題があります後続の呼び出しで可能な値0

ここでは、この変数をnullとして初期化し、その後の呼び出しで再初期化を行わないように宣言できますか?

+0

あなたのロジックが正常に見えます。実際の例を見て間違っていると言うのは難しいです。コンソールにエラーがありますか?あなたは 'alert()'を見ますか? –

+0

@RoryMcCrossan、グローバルストロークの後に名前が付けられたパラメータを持つ関数の呪い=)(それはそれがそれが何であったかを最終的にそれをクリックするためにそれを数回走らせてくれました) – Rob

+0

@ロブよく目撃されました - 私は完全にそれを逃しました:) –

答えて

1

をパラメータとして使用して、preEmptivePlayという関数に渡すと、変更がその関数の外側に見えないということです。

あなたがこの行を追加することによって明示的に起こる見ることができます:

mediaClick_class
alert(pauseIconStatus + " : After preEmptivePlay pause Icon status"); 

あなたがpreEmptivePlayを呼ぶところ変更はあなたがpreEmptivePlayの内側に作られたので、あなたはpauseIconStatusの値が再びnullの方法を見ていき直後機能を残すことはありません。

ではなく、これを持っているように、あなたはmediaClick_class変更した場合:ある

pauseIconStatus = preEmptivePlay(mediaClicked_class, pauseIconStatus); 

をし、また最後の行が(追加)ようpreEmptivePlayを変更する:あなたはpauseIconStatusが停止することを確認する必要があり

return pauseIconStatus; 

最初のものに続くクリックの場合はnullです。

また、mediaClick_classが呼び出される方法によっては、クリックハンドラの最後にreturn false;を追加する必要があります。そうしないと、ハイパーリンクをクリックするとページが再読み込みされます。あなたのページはdefault.htmlのと呼ばれ、リンクは次のようになりますされている場合:

<a href="default.html" id="myLink"><div id="icon_thing">Text</div></a> 

clickイベントのあなたの電線アップはこのような何かを見てする必要があります:

$("#myLink").on('click', function() 
{ 
    mediaClick_class('thing'); 

    return false; 
}); 
+0

ロブの大きな脳を見てください!ロブは明らかに彼の脳の別の男を奪ってしまったが、今のところ彼は2人いる。いいぞ! – Reeyona

+1

@Reeyona、heh、私が助けることができてうれしい=) 'preEmptivePlay'でパラメータの名前を変更することを検討してください - グローバルと同じ名前のパラメータを持つことは本当に悪い考えです。見た! =) – Rob

関連する問題

 関連する問題