首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HTML中加载多行文本的最好方法是什么(每隔60秒逐行加载)?

在HTML中加载多行文本的最好方法是什么(每隔60秒逐行加载)?
EN

Stack Overflow用户
提问于 2019-01-20 05:27:31
回答 3查看 272关注 0票数 0

我的网站有一个显示页面。

我让主要的中心文本每60秒改变一次。

我有大致的150+文本行,我希望页面循环浏览每一行文本。

加载这些文本行的最佳方式是什么?

1 x 1

是否从另一个文件加载它们?

只是想要最有效的方式来加载文本。

代码语言:javascript
复制
var divs = $('div[id^="content-"]').hide(),
  i = 0;

(function cycle() {

  divs.eq(i).fadeIn(2000)
    .delay(60000) // 1000 is 1 second
    .fadeOut(2000, cycle);

  i = ++i % divs.length;

})();
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="content-1">text 1</div>
<div id="content-2">text 2</div>
<div id="content-3">text 3</div>
<div id="content-4">text 4</div>
<div id="content-5">text 5</div>
<div id="content-6">text 6</div>
<div id="content-7">text 7</div>
......
<div id="content-180">text 180</div>

EN

回答 3

Stack Overflow用户

发布于 2019-01-20 06:01:24

这可以通过一个文本元素以1秒的间隔循环其内容。请注意,我使用了模运算符来允许循环通过数组(否则,当计数超过数组长度时,您将得到一个未定义的值。

请注意,您可以将其设置为变量,然后使用clearInterval( variable );停止循环。

我也没有淡入淡出动画-但它应该很容易纳入。

代码语言:javascript
复制
var content = ['This is text content 1',' This is another text  content', 'I am also a text content']; 
let contentLength = content.length;
let count=0;

function contentDisplay (){
   document.querySelector('#content').innerText = content[count % contentLength];
  count++;
}

// sets the initial display
contentDisplay();

// sets the interval to change the display
setInterval(contentDisplay, 1000);
代码语言:javascript
复制
#content {
  text-align: center;
  padding: 15px;
  font-size: 20px
  }
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p id="content">text 1</p>

票数 1
EN

Stack Overflow用户

发布于 2019-01-20 05:45:59

async/await是一个很好使用的模式。

代码语言:javascript
复制
var arr = ["foo","bar","test"];

function oneSecond() {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve('resolved');
        }, 1010);
    });
}
async function writeToDom(arr) {
    console.log("beginning write");
    for (var i = 0; i < arr.length; i++) {
        await oneSecond();
        console.log(arr[i]);
    }
    console.log("done.");
}
writeToDom(arr);

票数 0
EN

Stack Overflow用户

发布于 2019-01-20 05:57:14

150行的文本对于现代浏览器来说是非常少的,即使在小型手机上也是如此。您可以简单地将文本放在javascript中,然后一遍又一遍地设置单个div的内容。这比创建许多div要高效得多。

代码语言:javascript
复制
var lines = [
    "Text line 1",
    "Text line 2",
    "etc"
];

var div = $('div[id="content"]');
var i = 0;

(function cycle() {

  div
    .text(lines[i])
    .fadeIn(2000)
    .delay(60000) // 1000 is 1 second
    .fadeOut(2000, cycle);

  i = ++i % lines.length;

})();
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="content"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54271544

复制
相关文章

相似问题

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