JQuery函数以定时间隔显示文本

时间:2014-09-30 21:38:34

标签: javascript jquery html

我有一个包含一些计算的外部JavaScript文件。结果被放入一个数组中。我写了一些'get'函数来返回传入索引值的值。在我的HTML文件中,我编写了一个函数,每1秒在一个新行上显示数组。这是代码:

<script>
var showSequence = function (target, message, index, interval) {
    if(index < message.length) {
        $(target).append(message[index++]);
        setTimeout(function (){ showSequence(target, message, index, interval); }, interval);
    }
}
</script>

我称之为:

    <body>  
<script>
    $function(){
        for(var i = 0; i < getArrayLength(); i++){
            showSequence('#calculations', getArrayValue(i) + '<br />', i, 1000);
        }               
    }
</script>
<h1>Fibonacci Calculation:</h1>
<p id='calculations'></p>   

但是我得到了一个意外的令牌{错误。作为JavaScript的新手,我找不到遗失{。寻求一点帮助。

3 个答案:

答案 0 :(得分:0)

尝试在第二个函数开头用(替换$,并在第二个函数的开头添加()),以创建并调用一个立即调用的函数表达式(&#34; IIFE&#34;)。请参阅What is this (IIFE) construct in javascript?

或者,可以从第二个函数的开头删除$,为第二个函数提供name,并通过name调用第二个函数;即,

function runSequence(){
            for(var i = 0; i < arr.length; i++){
                showSequence('#calculations', arr, i, 1000)
            }               
        };
runSequence();

&#13;
&#13;
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

var showSequence = function (target, message, index, interval) {
    if(index < message.length) {
        $(target).append(message[index++]);
        setTimeout(function (){ showSequence(target, message, index, interval); }, interval);
    }
};
    // substituted `(` for `$` at beginning of function
    (function(){
        for(var i = 0; i < arr.length; i++){
            showSequence('#calculations', arr, i, 1000)
        }               
    }()) // added `())` at closing of function
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h1>Fibonacci Calculation:</h1>
<p id='calculations'></p>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

为什么要添加$function()?它不存在。 只需删除它,我认为它将起作用

JS

//$function(){
    for(var i = 0; i < getArrayLength(); i++){
        showSequence('#calculations', getArrayValue(i) + '<br />', i, 1000);
    }               
//}

编辑:我想我明白你想做什么

JS

$(function(){
    for(var i = 0; i < getArrayLength(); i++){
        showSequence('#calculations', getArrayValue(i) + '<br />', i, 1000);
    }               
})

答案 2 :(得分:0)

发现了这个问题。所以我必须等到JQuery准备就绪才能执行一组函数。我需要更换:

    $(function(){ //Do Stuff here });

使用:

    $(document).ready(function() { //Do Stuff here });