如何从 JavaScript 中的复选框检索值,使用 onchange 触发函数?
How do I retrieve values from checkboxes in JavaScript, using onchange to trigger a function?
我是一名在学校学习编程课程 (JavaScript) 的高中生。我们刚刚进行了一次测试(我惨遭失败),但我们可以再试一次。
我有几个复选框。它们都有一个 onchange ,稍后会触发一个函数。我想在单击复选框时检索它们的值。
我在这里浏览了一下,看到了一个叫做 jQuery 的东西。我不知道那是什么,所以我非常感谢在纯 JavaScript.
中得到我的帮助
好的,这是我的代码。注意:一些变量等是挪威语。我不认为这应该是一个问题,因为我显示了对所有的引用。
我的输入(复选框):
<input type="checkbox" class="tur" value="0" onchange="funcSjekkBoks(this)">
<input type="checkbox" class="tur" value="1" onchange="funcSjekkBoks(this)">
<input type="checkbox" class="tur" value="2" onchange="funcSjekkBoks(this)">
<input type="checkbox" class="tur" value="3" onchange="funcSjekkBoks(this)">
<input type="checkbox" class="tur" value="4" onchange="funcSjekkBoks(this)">
我只需要它们的值为数字,因为我将在稍后引用数组列表时使用它们。
这是我的函数:
var inputTur = document.getElementsByClassName("tur");
console.log(inputTur);
function funcSjekkBoks(checkboxEl) {
var resultatListe = [];
if (checkboxEl.checked) {
resultatListe.push(inputTur.value);
console.log(resultatListe);
}
else {
console.log("usant")
}
}
我希望发生的事情(如果从上到下选中所有复选框):
resultatListe = [0, 1, 2, 3, 4]
当我取消选中复选框时,它的值将从数组中删除。
这是当前发生的情况:
当我选中一个复选框时,我在控制台中得到 [undefined]
,当我取消选中一个复选框时,我得到 usant
(尽管这是预期的响应,但我没有使用 if 语句的其他部分还没有。)
以下代码适合您:
var resultatListe = [];
function funcSjekkBoks(checkboxEl) {
var value = parseInt(checkboxEl.value);
if (checkboxEl.checked) {
resultatListe.push(value);
console.log(resultatListe);
}
else {
console.log("usant");
var indexToRemove = resultatListe.indexOf(value);
resultatListe.splice(indexToRemove,1);
}
}
您需要将数组 resultatListe
保留在函数之外,否则每次复选框 checked/un-checked 时它都会被初始化为空,从而触发 onchange 处理程序。当您在不包含 属性 的 HTMLCollection 对象上访问 'value' 属性 时,您变得不确定。在 MDN
上阅读更多相关信息
var inputTur = document.getElementsByClassName("tur");
var resultatListe = [];
console.log(inputTur);
function funcSjekkBoks(checkboxEl) {
if (checkboxEl.checked) {
resultatListe.push(parseInt(checkboxEl.value));
}
else {
resultatListe = resultatListe.filter(d => d != checkboxEl.value)
}
console.log(resultatListe);
}
你的逻辑有 2 个错误:
1) 需要在函数外定义resultatListe
,这样就不会每次都初始化为空数组
2) 在您的代码中 resultatListe.push(inputTur.value);
inputTur 是复选框的 HTMLCollection,而您需要单个复选框。
对于else逻辑,如果每个复选框的值都是唯一的,你可以使用array.prototype.filter
方法从resultatListe
中过滤掉复选框的值
我是一名在学校学习编程课程 (JavaScript) 的高中生。我们刚刚进行了一次测试(我惨遭失败),但我们可以再试一次。
我有几个复选框。它们都有一个 onchange ,稍后会触发一个函数。我想在单击复选框时检索它们的值。
我在这里浏览了一下,看到了一个叫做 jQuery 的东西。我不知道那是什么,所以我非常感谢在纯 JavaScript.
中得到我的帮助好的,这是我的代码。注意:一些变量等是挪威语。我不认为这应该是一个问题,因为我显示了对所有的引用。
我的输入(复选框):
<input type="checkbox" class="tur" value="0" onchange="funcSjekkBoks(this)">
<input type="checkbox" class="tur" value="1" onchange="funcSjekkBoks(this)">
<input type="checkbox" class="tur" value="2" onchange="funcSjekkBoks(this)">
<input type="checkbox" class="tur" value="3" onchange="funcSjekkBoks(this)">
<input type="checkbox" class="tur" value="4" onchange="funcSjekkBoks(this)">
我只需要它们的值为数字,因为我将在稍后引用数组列表时使用它们。
这是我的函数:
var inputTur = document.getElementsByClassName("tur");
console.log(inputTur);
function funcSjekkBoks(checkboxEl) {
var resultatListe = [];
if (checkboxEl.checked) {
resultatListe.push(inputTur.value);
console.log(resultatListe);
}
else {
console.log("usant")
}
}
我希望发生的事情(如果从上到下选中所有复选框):
resultatListe = [0, 1, 2, 3, 4]
当我取消选中复选框时,它的值将从数组中删除。
这是当前发生的情况:
当我选中一个复选框时,我在控制台中得到 [undefined]
,当我取消选中一个复选框时,我得到 usant
(尽管这是预期的响应,但我没有使用 if 语句的其他部分还没有。)
以下代码适合您:
var resultatListe = [];
function funcSjekkBoks(checkboxEl) {
var value = parseInt(checkboxEl.value);
if (checkboxEl.checked) {
resultatListe.push(value);
console.log(resultatListe);
}
else {
console.log("usant");
var indexToRemove = resultatListe.indexOf(value);
resultatListe.splice(indexToRemove,1);
}
}
您需要将数组 resultatListe
保留在函数之外,否则每次复选框 checked/un-checked 时它都会被初始化为空,从而触发 onchange 处理程序。当您在不包含 属性 的 HTMLCollection 对象上访问 'value' 属性 时,您变得不确定。在 MDN
var inputTur = document.getElementsByClassName("tur");
var resultatListe = [];
console.log(inputTur);
function funcSjekkBoks(checkboxEl) {
if (checkboxEl.checked) {
resultatListe.push(parseInt(checkboxEl.value));
}
else {
resultatListe = resultatListe.filter(d => d != checkboxEl.value)
}
console.log(resultatListe);
}
你的逻辑有 2 个错误:
1) 需要在函数外定义resultatListe
,这样就不会每次都初始化为空数组
2) 在您的代码中 resultatListe.push(inputTur.value);
inputTur 是复选框的 HTMLCollection,而您需要单个复选框。
对于else逻辑,如果每个复选框的值都是唯一的,你可以使用array.prototype.filter
方法从resultatListe