Javascript每50毫秒显示一次变量

时间:2014-01-16 03:50:40

标签: javascript html settimeout

我想做一点加载......'我的网站的小部件,使用javascript。

var percent=0;  
var message="Loading... "  
var per="%"  
function count(){  
    percent=percent+1;  
    if(percent==100){  
        alert("Loading end.")  
    }else{  
        setTimeout("count",50)  
        document.write(message)  
        document.write(percent)  
        document.write(per)  
    }

但它没有运行。我想我有一些错误(或者可能是完全错误的)。我怎样才能做到这一点?我想每50ms更新一次显示的消息。

7 个答案:

答案 0 :(得分:0)

尝试

  

的setInterval(计数,50);

而不是setTimeOut(“count”,50)

答案 1 :(得分:0)

你想设置一个每隔x毫秒运行一次的间隔,传入一个匿名函数来调用函数来调用

var percent=0;  
var message="Loading... "  
var per="%"  
function count(){  
    percent=percent+1;  
    if(percent==100){  
        alert("Loading end.")  
    }else{  
        setInterval(function() { count() },50)  
        document.write(message)  
        document.write(percent)  
        document.write(per)  
    }
} <--- you were also missing this ending brace

答案 2 :(得分:0)

脚本:

var percent = 0;
var message = "Loading... ";
var per = "%";

$(document).ready(function () {
    count();
});

function count() {
    percent = percent + 1;
    if (percent == 100) {
        alert("Loading end.");
    } else {
        setTimeout(function () {
            count();
        }, 50);
        document.write(message);
        document.write(percent);
        document.write(per);
    }
}

看到这个小提琴更多http://jsfiddle.net/8nhmU/19/

答案 3 :(得分:0)

请参阅此jsfiddle

HTML:

<span id="loading"></span>

使用Javascript:

var percent = 0;
var message = "Loading...";
var per = "%";
var element = document.getElementById('loading');

var interval = setInterval(function() {
    element.innerHTML = message + percent + per;
    percent += 1;
    if(percent > 100) {
        clearInterval(interval)
    };
}, 50)

答案 4 :(得分:0)

您的示例中的代码缺少大量的分号结尾的花括号,但这不是最终问题。

调用setTimeout时出现的“问题”是第一个参数必须是实际函数,而不是字符串。如果您删除了呼叫周围的引号,它将起作用。

以下是您的代码的副本,重新格式化:

var percent=0;  
var message="Loading... ";
var per="%";

function count() {
    percent++;

    if (percent == 100) {
        alert("Loading end.");
    } else {
        setTimeout(count, 50);
        document.write(message);
        document.write(percent);
        document.write(per);
    }
}

答案 5 :(得分:0)

你做错了。您应该在窗口加载时调用setInterval方法。加载完成后,您应该通过使用其ID清除间隔来停止间隔。

var countId;
window.onload = function(){
    countId=setInterval(count,50);
}

function count(){
    if(per=99){
      clearInterval(countId);
    }
    per++;
    //show your message
}

答案 6 :(得分:0)

尝试使用间隔并在完成进度后将其清除:

<!DOCTYPE html>
<html>
    <head>
        <title>testing</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div id="progress">MSG</div>
        <script type="text/javascript">
            var percent = 0;
            var message = "Loading... ";
            var per = "%";
            var dom = document.getElementById('progress');
            var iv = setInterval(function(){
                console.log(message);
                dom.innerHTML = ((percent++) + per +' '+ message);
                if(percent === 100){
                    console.log("Loading end.");
                    clearInterval(iv);
                    return false;
                }
            }, 50);
        </script>
    </body>
</html>
相关问题