【发布时间】:2023-01-11 16:28:00
【问题描述】:
我有许多复选框的列表,我需要显示它们被选中的顺序。 是这样的:
[1] checkbox
checkbox
checkbox
[2] checkbox
checkbox
[3] checkbox
检查它们的顺序并不重要,重要的是它们需要如图所示从上到下排序。
我在编辑 HTML 方面的选择有限,因为它是动态呈现的,并且结构如下所示:
<td>
<label>
<input type="checkbox">
"Sample text"
</label>
</td>
<td>
<label>
<input type="checkbox">
"Sample text"
</label>
</td>
<td>
<label>
<input type="checkbox">
"Sample text"
</label>
</td>
etc.
所以我尝试了以下方法:
$('input[type=checkbox]').on('change', function(){
var number = $('input[type=checkbox]:checked').length;
$('label:has(input[type=checkbox]:checked)').text(number);
});
但它最终将每个 label 内容替换为 1(甚至不是计数)。
我在 Stackoverflow 上搜索了答案,我找到了最合适的答案:
document.querySelectorAll('td').forEach(el => {
el.innerHTML += '<span class="letter"> </span>'
})
let checkedItems=[]
document.querySelectorAll('[type=checkbox]').forEach(el => {
el.value = el.closest('label').innerText.trim()
el.addEventListener('change', e => {
let n = el.closest('label').innerText.trim();
if (!e.target.checked) checkedItems.splice(checkedItems.indexOf(n),1)
else checkedItems.push(n);
document.querySelectorAll('.letter').forEach( l=> l.innerHTML = '')
checkedItems.forEach((n,i) => {
document.querySelector(`input[value=${n}]`).closest('td').querySelector('.letter').innerHTML = i;
})
});
});
在这种情况下,我收到由输入值引起的错误,因为它不是字母数字。我可以通过什么方式编辑其中任何一个才能工作?谢谢!
【问题讨论】:
标签: javascript html jquery