为了账号安全,请及时绑定邮箱和手机立即绑定

每n秒获取一个新值

每n秒获取一个新值

桃花长相依 2021-04-06 13:14:46
我有一个显示报价的网页。我随机选择其中一个引号。目前,每次加载网页时都会执行此操作,现在,我希望它每5秒选择一次。我是一个初学者,不确定如何最好地实现此功能或适当的功能。setInterval?,setTimeout?,delay?,wait?var quotes = JSON.parse('{\    "0": "Don\'t worry about what anybody else is going to do. The best way to predict the future is to invent it. -- Alan Kay", \    "1": "Keep away from people who try to belittle your ambitions. Small people always do that, but the really great make you feel that you, too, can become great. -- Mark Twain", \    "2": "No problem should ever have to be solved twice. -- Eric S. Raymond, How to become a hacker", \    "3": "Attitude is no substitute for competence. -- Eric S. Raymond, How to become a hacker", \    "4": "It is said that the real winner is the one who lives in today but able to see tomorrow. -- Juan Meng", \    "5": "Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it. -- Alan J.Perlis(Epigrams in programming)", \    "6": "A year spent in artificial intelligence is enough to make one believe in God. -- Alan J.Perlis(Epigrams in programming)" \}');function getRandomArbitrary(min, max) {    return Math.random() * (max - min) + min;}var num = Math.floor(getRandomArbitrary(0, Object.keys(quotes).length));document.getElementById('quote').innerHTML = quotes[num];如前所述,我现在希望ID中的值'quote'每5秒更新一次。所以我认为这意味着更新numvar?
查看完整描述

3 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

很好的是您想出了填充div的代码,我在setInterval中添加了一个代码段来调用该代码,该代码每5s更新一次。确保移开后调用clearInterval以停止setInterval(移至其他页面,关闭)。


var quotes = JSON.parse('{\

    "0": "Don\'t worry about what anybody else is going to do. The best way to predict the future is to invent it. -- Alan Kay", \

    "1": "Keep away from people who try to belittle your ambitions. Small people always do that, but the really great make you feel that you, too, can become great. -- Mark Twain", \

    "2": "No problem should ever have to be solved twice. -- Eric S. Raymond, How to become a hacker", \

    "3": "Attitude is no substitute for competence. -- Eric S. Raymond, How to become a hacker", \

    "4": "It is said that the real winner is the one who lives in today but able to see tomorrow. -- Juan Meng", \

    "5": "Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it. -- Alan J.Perlis(Epigrams in programming)", \

    "6": "A year spent in artificial intelligence is enough to make one believe in God. -- Alan J.Perlis(Epigrams in programming)" \

}');


function updateUI() {

var num = Math.floor(getRandomArbitrary(0, Object.keys(quotes).length));


document.getElementById('quote').innerHTML = quotes[num];

}


function getRandomArbitrary(min, max) {

    return Math.random() * (max - min) + min;

}


var interval = setInterval(updateUI, 5000);


//cleanup

//clearInterval(interval);

<div id="quote"></div>


查看完整回答
反对 回复 2021-04-15
?
郎朗坤

TA贡献1921条经验 获得超9个赞

您可以使用setInterval,它以固定的时间延迟重复调用一个函数或执行一个代码段,并且回调函数内部num每次都会获取一个新值。


var quotes = JSON.parse('{\

    "0": "Don\'t worry about what anybody else is going to do. The best way to predict the future is to invent it. -- Alan Kay", \

    "1": "Keep away from people who try to belittle your ambitions. Small people always do that, but the really great make you feel that you, too, can become great. -- Mark Twain", \

    "2": "No problem should ever have to be solved twice. -- Eric S. Raymond, How to become a hacker", \

    "3": "Attitude is no substitute for competence. -- Eric S. Raymond, How to become a hacker", \

    "4": "It is said that the real winner is the one who lives in today but able to see tomorrow. -- Juan Meng", \

    "5": "Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it. -- Alan J.Perlis(Epigrams in programming)", \

    "6": "A year spent in artificial intelligence is enough to make one believe in God. -- Alan J.Perlis(Epigrams in programming)" \

}');


function getRandomArbitrary(min, max) {

  return Math.random() * (max - min) + min;

}

// you need this value only once so no need to get it at every interval

let maxVal =Object.keys(quotes).length);

setInterval(() => {

  var num = Math.floor(getRandomArbitrary(0,maxVal);

  document.getElementById('quote').innerHTML = quotes[num];

}, 5000)

<div id='quote'></div>


查看完整回答
反对 回复 2021-04-15
  • 3 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信