Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 变量更改后的调用事件_Javascript_Jquery_Html_Api_Spotify - Fatal编程技术网

Javascript 变量更改后的调用事件

Javascript 变量更改后的调用事件,javascript,jquery,html,api,spotify,Javascript,Jquery,Html,Api,Spotify,对于一个学校项目,我正在制作一个网站,让用户能够相互倾听 到目前为止,我有这个按钮,可以让用户听另一个用户正在听的歌曲,包括正确的位置。但这只会调用此函数一次 我想要的是当[randomNummer}更改时,它将自动再次调用该函数。有人知道我如何做到这一点,以及我必须使用什么来实现这一点吗 这是按钮的代码: document.getElementById('play-song').addEventListener('click', function() {

对于一个学校项目,我正在制作一个网站,让用户能够相互倾听

到目前为止,我有这个按钮,可以让用户听另一个用户正在听的歌曲,包括正确的位置。但这只会调用此函数一次

我想要的是当[randomNummer}更改时,它将自动再次调用该函数。有人知道我如何做到这一点,以及我必须使用什么来实现这一点吗

这是按钮的代码:

         document.getElementById('play-song').addEventListener('click', function() {      
        $.ajax({
          url: 'https://api.spotify.com/v1/me/player/play',
          type: 'PUT',
          headers: {
            'Authorization': 'Bearer ' + access_token
          },
          dataType: "json",
          contentType: "application/json",
          data: JSON.stringify({
            "uris": [randomNummer],
            "position_ms": seconds
          })
        });
        }, false);  
randomNummer当前使用数组生成:

var randomNummer;      
    var myArray = [
      "spotify:track:1EtcyegB7JLkAwwqiPyeJ6", 
      "spotify:track:6rAXHPd18PZ6W8m9EectzH", 
      "spotify:track:5qaEfEh1AtSdrdrByCP7qR", 
      "spotify:track:1CnPYaKxTVb4LWOtiGOm0m", 
      "spotify:track:3qEg6xYffvuvwpq4U6FRrK"
    ];

    setInterval(function(){
           callItem();
        }, 200000); 
   var callItem = function(){       
    randomNummer = myArray[Math.floor(Math.random()*myArray.length)];
      document.getElementById("song-uri").innerHTML = randomNummer;
   }

我看到您使用了Jquery。所以…
首先,稍微更改一下您的代码:

$('#play-song').on('click', function(e) {
  $.ajax({
    url: 'https://api.spotify.com/v1/me/player/play',
    type: 'PUT',
    headers: {
      'Authorization': 'Bearer ' + access_token
    },
    dataType: "json",
    contentType: "application/json",
    data: JSON.stringify({
      "uris": $("#song-uri").val(),
      "position_ms": seconds
    })
  });
}, false);
以及:

在这种情况下,我们将使用隐藏输入来存储随机数:

<input type="hidden" id="song-uri" />
var randomNummer={
值:函数值(newValue){
//如果设置了一个新值,则将其分配给内部“\u value”,并触发回调,该回调可以根据需要执行操作
if(newValue的类型!=“未定义”){
此值为.\u value=newValue;
这是callback();
}
//始终返回当前值
返回此值;
},
回调:函数回调(){
//在价值改变后做你想做的事情
console.log(“值更改为”+此值);
}    
};
var myArray=[
“spotify:track:1etcyegb7jlkawqipyej6”,
“spotify:track:6rAXHPd18PZ6W8m9EectzH”,
“spotify:track:5Qaefeh1ATSDRBYCP7QR”,
“spotify:track:1CNPYAKXTVB4LWOTIGOMm”,
“spotify:track:3qEg6xYffvuvwpq4U6FRrK”
];
var callItem=函数(){
document.getElementById(“歌曲uri”).innerHTML=randomNummer.value(myArray[Math.floor(Math.random()*myArray.length)];
}
设置间隔(callItem,2000);

当我实现它时,我在控制台中得到了“未定义”的randomNummer,它现在似乎对大多数人起作用。只有catch change事件似乎没有任何作用。我已经这样测试过:`$(“#歌曲uri”)。on('change',function(e){buttonPressed=+1;})`但对buttonPressed的值没有任何更改。
<input type="hidden" id="song-uri" />
$("#song-uri").on('change', function(e){
  //event on change random value
});