0

我试图让一个复选框返回 1 或 0,具体取决于它是否被选中。我很难理解为什么这个 if 函数的返回不起作用。如果我使用 console.log 而不是 return 输出是正确的。选中时为 1 未选中时为 0。使用 return,checked 被跳过,它只返回 else 语句,所以它是 0,无论是选中还是未选中。我一般是编码新手,所以我确定我在这里遗漏了一些简单的东西。有任何想法吗?谢谢!

document.getElementById("materialLoaded").addEventListener('input', materialCheck);

function materialCheck() {

    if (this.checked) {
        return 1;
    } else {
        return 0;
    }
}
4

2 回答 2

0

确定你不会看到任何东西,因为你没有告诉你的程序告诉你任何东西。您是在告诉它在函数中返回一个值,但要查看它返回的值,您必须调用该函数。例如,要查看您的返回值,使用您的窗口调用该函数:

 document.getElementById("materialLoaded").addEventListener('input', materialCheck);

function materialCheck() {

if (this.checked) {
    return 1;
} else {
    return 0;
}

window.alert(materialCheck());
 }

javascript是面向对象的,你不能写一个函数,它应该自己工作,它必须被调用。console.log 之所以有效,是因为那里有一个对象,它是控制台调用该函数或显示您要求的内容(例如:console.log(“hello”))

于 2020-09-25T20:04:09.147 回答
0

你在评论中说你想查看有多少复选框被选中。因此,在复选框中添加一个事件侦听器(或使用事件委托)并检查使用简单选择器检查了多少。

基本概念:

const wrapper = document.querySelector("#wrapper");

const validateCheckboxes = function() {
  const checked = document.querySelectorAll(".chk:checked");
  const isValid = checked.length === 3;
  wrapper.classList.toggle("valid", isValid);
};

wrapper.addEventListener("change", validateCheckboxes);
.valid {
  background-color: green;
}
<div id="wrapper">
  <input type="checkbox" class="chk" />
  <input type="checkbox" class="chk" />
  <input type="checkbox" class="chk" />
  <input type="checkbox" class="chk" />
  <input type="checkbox" class="chk" />
  <input type="checkbox" class="chk" />
  <input type="checkbox" class="chk" />
  <input type="checkbox" class="chk" />
</div>

于 2020-09-25T20:16:41.897 回答