我有一个功能,可以在生成报告时在弹出窗口中显示点阵点。我想显示文字:
生成报告。 生成报告.. 生成报告......
...重复,直到报告准备好。到目前为止,我只能在没有其他文本的情况下获得弹出窗口中的三个点。这是我的代码片段:
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);
答案 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);