当前位置: 首页 > 知识库问答 >
问题:

JavaScript for循环使用一个函数为几个对象

卫飞
2023-03-14

我正在做一个游戏,有三个骰子方块,点击一个按钮就会显示出随机的面孔。图像由css图像精灵生成。如果随机数为1,则骰子立方体将分配给具有图像精灵的css类。

function diceroll (){

    var randomnumber = Math.floor(Math.random() * (6 - 1 + 1)) + 1;

        switch (randomnumber) {

        case 1:
            document.getElementById("dice1").setAttribute("class", "face1");
            break;
        case 2:
            document.getElementById("dice1").setAttribute("class", "face2");
            break;
        case 3:
            document.getElementById("dice1").setAttribute("class", "face3");
            break;
        case 4:
            document.getElementById("dice1").setAttribute("class", "face4");
            break;
        case 5:
            document.getElementById("dice1").setAttribute("class", "face5");
            break;
        case 6:
            document.getElementById("dice1").setAttribute("class", "face6");
            break;
    }
}

我有一个单独的按钮,当点击它时,应该运行上面的diceroll功能到三个div,ID为dice1、dice2和dice3。

我想用

function gotoloop (){

    for (i = 0; i < 2; i++) {
        // the code that affects dice(n) and n=1 and then diceroll function
        // affects dice1 n+1
    }

}

我研究了一下,但找不到实现最后两行注释代码的方法。请让我知道我的方法是否正确,并帮助我与代码。

共有1个答案

邓宜年
2023-03-14

如果我正确理解了你的问题,你想要这样的东西:

function diceroll (diceId){

    var randomnumber = Math.floor(Math.random() * 6) + 1;

    switch (randomnumber) {

        case 1:        document.getElementById(diceId).setAttribute("class", "face1");        break;
        case 2:        document.getElementById(diceId).setAttribute("class", "face2");        break;
        case 3:        document.getElementById(diceId).setAttribute("class", "face3");        break;
        case 4:        document.getElementById(diceId).setAttribute("class", "face4");        break;
        case 5:        document.getElementById(diceId).setAttribute("class", "face5");        break;
        case 6:        document.getElementById(diceId).setAttribute("class", "face6");        break;
    }
}

function gotoloop (){
    // Start loop at i=1 because the first ID is dice1
    for (var i = 1; i <= 3; i++) {
        // the code that affects dice(n) and n=1 and then diceroll function affects dice1
        // n+1
        diceroll("dice" + i);
    }
}

或者根据马克·鲍姆巴赫的评论,你可以写:

function diceroll (diceId){

    var randomnumber = Math.floor(Math.random() * 6) + 1;

    document.getElementById(diceId).setAttribute("class", "face" + randomnumber);
}
 类似资料:
  • 假设我们正在使用这个类: 现在我们有了一个学生名单,我们被问到了一些问题,比如: 筛选姓名为“Jonh”的人并得到平均年龄 过滤那些名字是“玛丽”的人并获得最大的高度 过滤那些名字是“ben”的人,得到最小的权重 我认为一个干净易懂的解决方案是使用lambdas按名称过滤并得到所要求的内容: 我想它至少要在列表上迭代3次,使用带有条件的单个循环可能更有效: 我认为第一种方法更干净,但第二种更快。我

  • 问题内容: 这是Java代码的片段: 它显示5。但是为什么声明了for循环的声明部分,却没有声明? 在uu上,您将引用2D数组…这不是一项作业。我正在准备Java认证。干杯 问题答案: 由于你是一个。因此,当您对其进行迭代时,您将首先获得,然后可以对该数组进行迭代以获取单个元素。 因此,您的外部循环具有as类型,因此具有该声明。如果您在另一个内循环中进行迭代,则将得到以下类型:-

  • 因此,我对python(在Spyder IDE3.8中使用Python3)相对来说是个新手。我有下面的主要计算文件,其中几个函数汇集在一起,并循环通过。现在,我试图用等级函数来评估spray_pressure、spray_angle和particle_size的单个值是否在给定的边框中。如果不是,则0转到新数组,如果是,则实际值存储在新数组中。所以我想将所有的输出存储在4个新的数组spray_pr

  • 我正在尝试修改类Circle以包含第三个构造函数,用于构造具有两个参数的Circle实例——半径的双精度和颜色的字符串。还修改主类以使用此构造函数构造Circle的实例。我对此有困难,我一直收到从未使用构造函数Circle的消息。请查看代码。

  • 我的程序中有两个while循环。第一个是针对游戏菜单的,第二个是针对实际游戏的。如果“Gameover-Event”发生,我想返回菜单。我不知道该怎么做。