在我的JS文件中,我有一个名为getRippleVals()
的函数,通过url调用JSON文件,此函数在页面加载后每5秒执行一次,此函数由{{1}调用}。我还有一个带有onclick功能的按钮,名为$( document ).ready(function () {})
。
我想要做的是,当单击按钮时,它会调用changecoin(coin)
并传递一个字符串参数来更改它调用的JSON URL。然后,在单击按钮后每次调用getRippleVals()都会使用新的URL。
目前,我已经通过使用名为getRippleVals()
的全局变量来实现它,该变量用于查找JSON文件。单击该按钮时,JSONurl
的值将更改。但是目前这并没有立即调用JSONurl
函数,这意味着我必须等待几秒钟才能在页面更新之前再次调用该函数。
我不确定我应该怎么做,因为我不确定如何将参数传递给getRippleVals()
调用的函数
这是我的JS:
$( document ).ready(function () {})
答案 0 :(得分:0)
为什么不这样做?
document.getElementById("dropdown-btc").addEventListener("click", function(){
changeCoin("btc");
});
document.getElementById("dropdown-eth").addEventListener("click", function(){
changeCoin("eth");
});
document.getElementById("dropdown-xrp").addEventListener("click", function(){
changeCoin("xrp");
});
$( document ).ready(function () {
console.log( "ready!" );
var JSONurl = "http://coincap.io/page/XRP"
//call getRippleVals() and pass the JSONurl, it will execute after 5 sec
setTimeout(getRippleVals(JSONurl), 5000);
});
function getRippleVals(JSONurl){
$.getJSON(JSONurl,
function (data) {
//... extra function methods are here, not relevant to the problem.
});
});
}
function changeCoin(coin){
console.log(coin);
var coin = coin.toUpperCase();
$("#dropdownMenuButton").html(coin);
if(coin === "BTC")
{
JSONurl = "http://coincap.io/page/BTC";
getRippleVals(JSONurl)
$("#pairing-text").html("BTC : USD");
lastPrice = 0;
}
else if(coin === "ETH")
{
JSONurl = "http://coincap.io/page/ETH";
getRippleVals(JSONurl)
$("#pairing-text").html("ETH : USD");
lastPrice = 0;
}
else if(coin === "XRP")
{
JSONurl = "http://coincap.io/page/XRP";
getRippleVals(JSONurl)
$("#pairing-text").html("XRP : USD");
lastPrice = 0;
}
}
您必须等待5秒才能执行getRippleVals()
,因为您拨打了setTimeout
getRippleVals()
修改强>
很抱歉以后的回复。至于你的要求,我已经在下面提供了一个示例代码。
var JSONurl = "http://coincap.io/page/XRP";
var counter = 5000;
var timer = null;
$(document).ready(function(){
getRippleValstimer(); //call the timer so getRippleVals() will execute every 5sec
//will execute 5 sec after page load
document.getElementById("dropdown-btc").addEventListener("click", function(){
changeCoin("btc");
});
document.getElementById("dropdown-eth").addEventListener("click", function(){
changeCoin("eth");
});
document.getElementById("dropdown-xrp").addEventListener("click", function(){
changeCoin("xrp");
});
});
//the timer function
function getRippleValstimer(){
timer = setTimeout(function(){
getRippleValstimer(); getRippleVals();
},counter);
}
function getRippleVals(){
//your code here
console.log(JSONurl);
}
function changeCoin(coin){
var coin = coin.toUpperCase();
console.log(coin);
if(coin === "BTC")
{
JSONurl = "http://coincap.io/page/BTC";
clearTimeout(timer); //clear the timer
getRippleVals();//call getRippleVals() so it will execute without waiting for 5 seconds
getRippleValstimer(); //initialize the timer function again
}
else if(coin === "ETH")
{
JSONurl = "http://coincap.io/page/ETH";
clearTimeout(timer); //clear the timer
getRippleVals();//call getRippleVals() so it will execute without waiting for 5 seconds
getRippleValstimer(); //initialize the timer function again
}
else if(coin === "XRP")
{
JSONurl = "http://coincap.io/page/XRP";
clearTimeout(timer); //clear the timer
getRippleVals();//call getRippleVals() so it will execute without waiting for 5 seconds
getRippleValstimer(); //initialize the timer function again
}
}