首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将内容添加到每一个

将内容添加到每一个
EN

Stack Overflow用户
提问于 2018-01-04 17:21:06
回答 2查看 502关注 0票数 0

如何使用javascript每20秒更新一次marquee中的内容?

我的意思是,在前20秒,读取第一个对象,在第二个40秒读取第二个对象,等等。,而不更新页面,则意味着自动更新它。

这是javascript函数:

代码语言:javascript
复制
    function read () {
  $.getJSON("jsons/jobs.json", function(json) {
  Thejobs = json;
  for(var k in Thejobs.Studies){
     $('#boxContent').append('<br>'+"position: "+Thejobs.Studies[k].position+
     '<br>'+"Academy: "+Thejobs.Studies[k].academy+'<br>'+"address: "
     +Thejobs.Studies[k].address+'<br>'+"Description: "+Thejobs.Studies[k].jobDescription)
     $('#boxContent').append("<br>_____________________");
     }}); }

这是我的json文件:

代码语言:javascript
复制
   {"Studies": {
    "jobID1": {
        "position": "student position",
        "academy": "Haifa University",
        "address": "haifa,isreal",
        "jobDescription": "Big data"
    },
    "jobID2": {
        "position": "Research 1",
        "academy": "saarland University",
        "address": "saarbrucken , germany",
        "jobDescription": "Electronic engineer"
    },
    "jobID3": {
        "position": "Studie 1",
        "academy": "Technion",
        "address": "haifa,isreal",
        "jobDescription": "Speed of internet"
    },
    "jobID4": {
        "position": "Studie 2",
        "academy": "Technion",
        "address": "USA ,los angeles",
        "jobDescription": "analysis data "
    }
}

}

html文件:

代码语言:javascript
复制
  <marquee direction="up" scrollamount="2">
  <p id="boxContent"></p>
   </marquee>

我试过了,但没有成功:

代码语言:javascript
复制
<script>
var myVar = setInterval(joobs(), 20000);
var ii=0;
function joobs(){
  $.getJSON("jsons/jobs.json", function(json) {
   Thejobs = json;
     $('#boxContent').append('<br>'+"position: 
   "+Thejobs.Studies[ii].position+
    '<br>'+"Academy: "+Thejobs.Studies[ii].academy+'<br>'+"address: "
    +Thejobs.Studies[ii].address+'<br>'+"Description: 
  "+Thejobs.Studies[ii].jobDescription)
    $('#boxContent').append("<br>_____________________");
   });
     ii=ii+1; 
      </script>
EN

回答 2

Stack Overflow用户

发布于 2018-01-04 19:14:01

我禁不住让这令人厌恶。

如果您需要在一定的时间间隔内做一些事情,请使用setInterval。它具有签名setInterval(callback_function, interval_in_milliseconds);,只需将函数更改为marquee的值作为回调,并将间隔设置为20000,延迟20秒。您的函数将每20秒调用一次,如下面的示例所示。

代码语言:javascript
复制
var values = ["Marquees", "shall", "never", "die.", "Long", "live", "the", "marquee!"];
var iterator = 1;
var colorator = 0;
function updateMarquee() { 
  document.getElementById('boxContent').innerHTML = values[iterator];
  iterator = (iterator + 1) % values.length;
  console.log("updateMarquee() has been called");
  
  return function() {
    console.log("updateMarquee() return value was called instead of the function");
  };
}

setInterval(updateMarquee, 1000);
setInterval(updateMarquee(), 10000);
代码语言:javascript
复制
<marquee direction="right" scrollamount="10" behavior="alternate">
  <p id="boxContent">Marquees</p>
</marquee>

更新:关于user78403的答案,我更新了代码片段,以显示在setInterval中调用函数本身与调用函数返回值之间的区别。在这个例子中,您将看到updateMarquee() has been called每秒钟记录一次,因为setInterval(updateMarquee, 1000);行。但是,您还将看到updateMarquee() return value was called instead of the function每10秒记录一次,因为行setInterval(updateMarquee(), 10000);

别用遮羞布。20年前,在网站上自动移动、播放、更改任何东西都可能让人心烦意乱,但现在它只是恼人的,用户会看不起你的网站。你应该有一个静态的列表,你的工作机会,用户可以阅读自己的速度。

票数 1
EN

Stack Overflow用户

发布于 2018-01-04 19:58:15

我纠正了代码中的一些语法错误。我会解释我做过的最重要的事情:

  • setInterval(joobs(), 20000) -> setInterval(joobs, 20000):必须将方法本身作为参数传递。否则,方法将被调用,其返回值将每20秒执行一次。
  • Thejobs.Studies[ii] -> Thejobs.Studies["jobID" + ii]:将属性名称指定为索引。传递一个号码是行不通的。由于JSON文件的属性名,因此还需要使用1而不是0初始化JSON。
  • 我还增加了一些遗漏的括号。

HTML和JSON不会更改。所以看起来都是这样的:

代码语言:javascript
复制
var myVar = setInterval(joobs, 20000);
var ii=1;
function joobs() {
    $.getJSON("jsons/jobs.json", function (json) {
        var Thejobs = json;
        $('#boxContent').append('<br>' + "position:" +
            Thejobs.Studies["jobID" + ii].position +
            '<br>' +
            "Academy: " +
            Thejobs.Studies["jobID" + ii].academy +
            '<br>' +
            "address: " +
            Thejobs.Studies["jobID" + ii].address +
            '<br>' +
            "Description:" +
            Thejobs.Studies["jobID" + ii].jobDescription);
        $('#boxContent').append("<br>_____________________");
    });
    ii = ii + 1;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48100415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档