Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何循环一个函数,每次循环时都更改变量,直到使用了所有变量?_Javascript_Arrays_If Statement - Fatal编程技术网

Javascript 如何循环一个函数,每次循环时都更改变量,直到使用了所有变量?

Javascript 如何循环一个函数,每次循环时都更改变量,直到使用了所有变量?,javascript,arrays,if-statement,Javascript,Arrays,If Statement,我想循环一个函数,每次运行时都改变变量,直到所有变量都被使用。目前,我已经将此功能复制了20多次,每次都更改了“每周一次” var a_week = "yes"; var b_week = "no"; var c_week = "yes"; function onload() { if a_week = "yes" { document.getElementById("dot").classList.add('open'); } else if a_w

我想循环一个函数,每次运行时都改变变量,直到所有变量都被使用。目前,我已经将此功能复制了20多次,每次都更改了“每周一次”

var a_week = "yes";
var b_week = "no";
var c_week = "yes";

function onload() {
    if a_week = "yes" {
        document.getElementById("dot").classList.add('open');

    }
    else if a_week = "no" {
        document.getElementById("dot").classList.add('closed');

    }
}

我会为你的周做一个数组,让你的
onload
函数接受一个参数,然后循环遍历它们

const weeks = [true, false, false, true];

function onload(week) {
  if(week) {
    document.getElementById("dot").classList.add('open');
  } else {
    document.getElementById("dot").classList.add('closed');
  }
}

weeks.forEach(onload);
您可以在上查看forEach的文档

对于每个不同的星期,您可能不打算每次都更改相同的HTML元素。上面的代码将继续向相同的
#dot
元素添加类。如果要将多个元素作为目标,可以保存元素数组或元素选择器。或者将其与我的旧答案中的对象中的数据相结合。您没有共享您的HTML结构,因此我不确定构造DOM操作的最佳方法是什么

另外,
onload
对于一个函数来说并不是一个好名字,因为它可能被认为与浏览器的事件有关


旧问题的答案: 似乎您应该使任何
sau g_week
表示一个对象,然后循环遍历它们的数组(或者,如果需要通过键引用它们,则用它们生成一个映射/对象)。我不确定您的上下文是什么,但我将编写一些字段名,并假设您正在处理位置

const locations = [
    {
        isOpen247: true,
        isPermanentlyClosed: false,
        openTime: new Date(),
        closeTime: new Date(),
    },
    {
        isOpen247: true,
        isPermanentlyClosed: true,
        openTime: new Date(),
        closeTime: new Date(),
    },
];

然后,您可以在阵列中循环并执行所需的操作:

locations.forEach(location => {
  if(location.isOpen247) {
    // do stuff
  } else {
    // do other stuff
  }
});

你的问题不清楚,你能试着扩展你的问题吗?@AdamH,我已经更新了代码来简化我正在做的事情。我想像循环一样运行函数,在每个循环中改变变量,直到所有变量都被处理。使用a_周,然后循环使用b_周,等等。