3 回答
TA贡献1828条经验 获得超4个赞
您可以使用以下方法访问数据属性element.dataset:
const chkBoxes = document.querySelectorAll('.change-checkbox');
const handleChange = function (e) {
const data = e.target.dataset.item;
config[data] = e.target.checked;
generatePassword();
}
chkBoxes.forEach(function(checkbox) {
checkbox.addEventListener('change', handleChange);
})
TA贡献1820条经验 获得超9个赞
只是一个一般性的说明,但我会鼓励使用constover ,let除非您有很好的理由重新分配值。除此之外,我将迭代这些元素,forEach而只是使用该数据属性的值作为对象键,就像这样。
const checkboxes = [...document.querySelectorAll('.change-checkbox')]
const config = {
syms: true,
nums: true,
caps: true,
lows: true
}
checkboxes.forEach(checkbox => {
const item = checkbox.dataset.item
checkbox.addEventListener('change', () => {
config[item] = !config[item]
generatePassword()
})
})
TA贡献1827条经验 获得超4个赞
您正在尝试设置配置对象的“数据”属性,而不是设置与复选框属性对应的属性。更改以下行
config.data = !config.data;
到下面访问数据值对应的属性
config[data] = !config[data];
添加回答
举报