2

这是我的第一个 javascript 项目,我无法将变量传递给函数。

这是我的“全局变量”中的相关部分

var timesran = [];
for (var x= 0; x<38; x++){
timesran[x] = 0;
}

下面是第一个尝试将 x 传递给函数的函数,以便我可以将结果存储在不同的数组中

function happytimes(){
for (var x= 0; x < 38; x++){
    switch (x){
        case 0:
            if (shouldiFlip[x]){
                randomizer(x);  //input that we want to feed into the function
                x++;
            }
}

(请注意:为了清楚起见,我已经从摘录中删除了 case1-38 的其余部分,所有其他情况看起来都一样,并且具有相同的输出 - 尽管随机函数在随机函数的每个不同函数中工作,但随机函数正在获得新的输出)

以下是随机函数

function randomizer(a){
if (startrunning){ 
    var rando = [];
    rando = Math.floor(Math.random()*4+1);
    timestorun[a] = rando[a];
    pos[a] = 0;
    console.log("hi there you are in new run now"+pos[a]+rando+timestorun[a]);
}
else{
pos[a] = pos[a] + 1;
        if (pos[a] >156){
            pos[a] = 0;
        }
    if (masterlet[pos[a]] == letter[a]){
        timesran[a] = timesran[a] +1;
            if (timesran[a] == timestorun[a]){
                console.log("ELSE THING"+pos[a]+rando+timestorun[a]);
                shouldiFlip[a] = 0;
            }
    }   
}

这里第一个控制台日志的输出是

hi there you are in new run now03undefined jquery.solari.letters.js:386

如您所见,timesran[] 未定义返回。这让我很难过。

我处理得对吗?我已经为此工作了大约 7 个小时来完善代码,这是我最后一次挂断。感谢您的帮助!!!

4

2 回答 2

2

这不起作用,因为您将 rando 数组设置为 Math.floor(Math.random()*4+1); 的变量 你应该更新它 rando[a] = Math.floor(Math.random()*4+1);

于 2013-04-01T08:49:39.270 回答
1

您正在将变量rando创建为一个数组,然后用一个数字覆盖它 - 随机提取的结果 - 同时丢弃旧的数组值,然后像数组一样索引它。最好的方法是简单地设置:

timestorun[a] = rando;

代替

timestorun[a] = rando[a];

并将变量直接分配给数字 - 而不是:

var rando = [];
rando = Math.floor(Math.random()*4+1);

仅使用

var rando = Math.floor(Math.random()*4+1);
于 2013-04-01T08:47:30.727 回答