2017-06-27 8 views
0

ユーザーが選択したdivの選択を解除しても機能しないようにするには、setInterval関数の実行を停止しようとしています。任意のアイデアですか?divを選択解除したときに停止コードが実行される

私は明確な間隔を試しましたが、それは機能しません。私はからこののcvalueも試してみましたが、コード内では更新されません。

$(document).on("click",".profTemp", function() 
       { 
        var pollUser; 
        if(!$(this).hasClass('selected')) 
        { 
        var selectedUser; 
        var previous = null; 
        var current = null; 
        var assigned = false; 

        selectedUser = $(this).children('span').text(); 
        selectedUser = selectedUser.trim(); 



        //selectedUser = $(this).children('span').text(); 
        console.log(selectedUser); 
        $(this).toggleClass('selected'); 

        //selectedUser = selectedUser.trim(); 

        pollUser = setInterval(function() 
        { 

         console.log(selectedUser); 
         $.ajax({ 
         url: '/getJSON', 
         dataType: 'json', 
         success: function(response) { 
          console.log(response + "84897348"); 
          obj = JSON.parse(response); 
          console.log(selectedUser + "inside success"); 

          var changeTo; 
          var deviceID; 

          console.log(current + "current"); 
          for(var i = 0; i < obj.clients.length; i++) 
          { 
           if((selectedUser == obj.clients[i].userName) && (assigned == false)) 
           { 
           console.log(selectedUser + " inside if"); 
           current = JSON.stringify(obj.clients[i]); 
           changeTo = obj.clients[i].uri; 
           device = obj.clients[i].deviceID 
           assigned = true; 
           } 
          } 
          assigned = false; 

          console.log(current + " current"); 
          console.log(previous + "previous"); 

          if(previous !== current) 
          {   

           console.log("ARE WE INSIDE HERE"); 

           $.ajax({ 
           url: 'https://api.spotify.com/v1/me/player/play', 
           contentType: 'application/json', 
           type: 'PUT', 
           dataType: 'json', 
           headers: { 
            'Authorization': 'Bearer ' + access_token 
           }, 
           data: JSON.stringify({"uris":[changeTo], "device_id":device, "offset": { "uri":changeTo} }), 
           success: function(response) { 
            console.log(response); 
           } 
           }); 
          } 
          } 
         }); 
         previous = current; 
         console.log(selectedUser); 
        }, 2000); 
        } 

        else if($(this).hasClass('selected')) 
        { 
        $(this).toggleClass('selected'); 
        console.log("not selected"); 
        clearInterval(pollUser); 
        }  

       }); 

`

+0

にはコンソールにログインし、 "選択しない" となっていますか? –

+0

うん、それはログに記録され、ポールユーザーのコードをループして戻ってくる。 – Toby

+0

ああ、1秒で答えが返ってくる –

答えて

2

var pollUserここで、setIntervalのIDは正しいと思われますか?後でこの関数では、pollUser = setInterval(function()...を実行します。 setIntervalのdocsを参照してください。

click.profTempのすべてで、機能の先頭にvar pollUserを追加して、新しいpollUser変数を作成しているため、これは機能しません。

setIntervalのIDを実際に保存する場合は、.profTempクリックハンドラ関数の有効範囲外の変数に保存してください。

Some more resources on function scope

"var"

+0

それはやった!ありがとう! – Toby

-1

入れするvar pollUser。 onclick関数の前に。

+0

komali_2説明:D – psdev

関連する問題