【问题标题】:Javascript loop an array, but the value didn't fowardJavascript循环一个数组,但值没有转发
【发布时间】:2021-12-20 11:29:00
【问题描述】:

我有一个由 PHP 服务器端生成的数组,battleinfo。 之后,我想用JavaScript循环数组,最终输出应该是

//what i want like below
//example, first aaa is 0 random by Math.floor(Math.random() * (max - min + 1));
11:40:01 monkey first 
11:40:06 hp-100
11:40:11 win
11:40:16 squrriel //when the battle[0] has been reach end of array, new aaa random, get value 2
11:40:21 hp-1000
11:40:26 win money 1000
11:40:31 monkey //random again when battle[2] has been finish.

但是,我当前的错误是 aaa 将是未定义的,现在输出如下:

11:40:01 money
11:40:06 undefined
11:40:11 undefined
11:40:16 undefined //loop forever

附上sn-p,请帮忙,谢谢。

var battleinfo = [
    ["monkey","hp-100","win"],
    ["crocok","hp-200","win money 100"],
    ["squrriel","hp-1000","win money 1000"],
];

var mystart = 0;

var battleinput = setInterval(function(){
    var date = new Date();
    var hour = ("0" + date.getHours()).substr(-2);
    var minutes = ("0" + date.getMinutes()).substr(-2);
    var seconds = ("0" + date.getSeconds()).substr(-2);
    
    
    if(mystart <= 0){
        var bb = 0;
        var infocount = battleinfo.length;
        min = 1;
        max = Math.floor(infocount);
        
        var aaa = Math.floor(Math.random() * (max - min + 1));//get random number, to decide which array to be show in div
        var mystart = battleinfo[aaa].length;//count the array have how many value to be show in div

        var randomItem = battleinfo[aaa][bb];//inset
        mystart--;
        bb++;
    }else{
        alert(aaa);
        //HERE, aaa AND bb will be undefined value
        var randomItem = battleinfo[aaa][bb];
        bb++;
    }

    document.getElementById("advanturerun").innerHTML = "<pre>" + hour + ":" + minutes + ":" + seconds + " " + randomItem  + "\n" + "</pre>" + document.getElementById("advanturerun").innerHTML;
}, 5000);
&lt;div id="advanturerun"&gt;&amp;nbsp;&lt;/div&gt;

【问题讨论】:

    标签: javascript arrays loops random


    【解决方案1】:

    它们是else 块中的undefined,因为它们在 else 块运行时从未定义过。 if 块永远不会在 else 块之前运行,因为它在间隔计时器的每次迭代中都会重新运行。

    或者换一种说法:因为您在区间回调之外定义了mystart,所以一旦mystart 变为零,else 块就会运行,而if 块永远不会运行。由于if 块没有运行,因此没有为变量分配值。

    您可以通过将var mystart = 0 放在间隔回调函数中来解决此问题。

    但是,此代码中还有许多其他问题可能需要针对 SO 提出不同的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 2011-06-24
      • 2019-04-20
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多