计算

时间:2017-03-08 20:34:39

标签: javascript

我有一个功能,可以在生成报告时在弹出窗口中显示点阵点。我想显示文字:

生成报告。 生成报告.. 生成报告......

...重复,直到报告准备好。到目前为止,我只能在没有其他文本的情况下获得弹出窗口中的三个点。这是我的代码片段:

on(link,“click”,function(){

          var dots = window.setInterval( function() {
            var wait = document.getElementById("reportLink");
            if ( wait.innerHTML.length > 2) 
                wait.innerHTML = "";
            else 
                wait.innerHTML += ".";
            }, 400);

      domAttr.set(dom.byId("reportLink"), "innerHTML", dots);

我尝试了这个,但它不起作用:

domAttr.set(dom.byId("reportLink"), "innerHTML", "Generating Report" + dots);

3 个答案:

答案 0 :(得分:0)

试试这个:



var dots = window.setInterval( function() {
   var wait = document.getElementById("reportLink");
   if ( wait.innerHTML.length > 19) 
       wait.innerHTML = "";
   else 
       wait.innerHTML += ".";
   }, 400);

var text = "Generating Report" + dots;
domAttr.set(dom.byId("reportLink"), "innerHTML", text);




检查长度时,需要包含“生成报告”的长度。

答案 1 :(得分:0)

您传递给setInterval的函数是直接操作dom元素而不是返回一个值(这无论如何都不会起作用),因此"Generating Report" + dots将无效dots }}只是对setInterval函数的引用。相反,你需要使用类似的东西修改你的setInterval函数(未经测试,因为我不确定你正在使用的JS库/框架):

var dots = window.setInterval( function() {
    var wait = document.getElementById("reportLink"),
               msg = "Generating Report",
               msgLen = msg.length;

    // Initialize to msg if blank
    wait.innerHTML = (wait.innerHTML === "") 
        ? msg 
        : wait.innerHTML; 

    if (wait.innerHTML.length >= (msgLen + 2))
        wait.innerHTML = msg;
    else 
        wait.innerHTML += ".";
}, 400);

不使用空字符串初始化和测试邮件,而是使用您要显示的实际邮件。我还使用变量配置了点数,而不是使用"magic number"

[编辑1] 确保删除此行(以及任何衍生物):     domAttr.set(dom.byId(“reportLink”),“innerHTML”,dots);

您传递给setInterval的功能正在完成所有工作。

[编辑2:如果reportLink元素为空,则通过初始化为msg来修复首次运行时的过多点。]

答案 2 :(得分:0)

也许这个?

var wait = document.getElementById("reportLink");
var loop = 0;
var text = "Generating Report";
window.setInterval( function() {
    if ( loop > 2) {
        wait.innerHTML = text;
        loop = 0
    } else {
        wait.innerHTML += ".";
        loop++
    }
}, 400);