如何将值从一个函数传递给另一个函数

How to pass a value from one function to another

  var boxes = document.getElementsByName('toggle');

  function markPreceding() {
    var curIndex = null;
    for (var j = 0; j < boxes.length; j++) {
      if (boxes[j].checked) {
        curIndex = j;
      }
    }
  }

  function checkInputs() {
    for (var k = 0; k <= curIndex.length; k++) {
      boxes[k].checked = true;
    }
  }

  for (var i = 0; i <= boxes.length; i++) {
    boxes[i].onchange = markPreceding;
    boxes[i].onchange = checkInputs;
  }
<input type="checkbox" id="product-1" name="toggle">
<input type="checkbox" id="product-2" name="toggle">
<input type="checkbox" id="product-3" name="toggle">
<input type="checkbox" id="product-4" name="toggle">
<input type="checkbox" id="product-5" name="toggle">

将此 "curIndex" 值传递给 checkInputs 函数时出现问题。 这应该在检查输入之前检查输入并获取它的值。

此项目只需要 ES5 语法。

编辑:ES5 语法方式

const boxes = document.getElementsByName('toggle');

boxes.forEach(function(box, I) {
  box.onclick = function(e) {
    markPreceding(i);
  };
});

function markPreceding(i) {
  for (var j = 0; j < boxes.length; j++) {
    if(j <= i) {
      document.getElementById('product-' + (j + 1)).checked = true;
    } else {
      document.getElementById('product-' + (j + 1)).checked = false;
    }
  }
}

原创:

试试这个:

const boxes = document.getElementsByName('toggle');

boxes.forEach((box, i) => {
  box.onclick = (e) => {
    markPreceding(i);
  };
});

function markPreceding(i) {
  for (var j = 0; j < boxes.length; j++) {
    if(j <= i) {
      document.getElementById(`product-${j + 1}`).checked = true;
    } else {
      document.getElementById(`product-${j + 1}`).checked = false;
    }
  }
}

出于某种原因,通过 document.getElementsByName 返回的 NodeList 数组更新输入似乎存在问题。不知道为什么,但是这段代码已经过验证。请参阅工作示例 here.