JavaScript宾果游戏问题:标记空间数组返回HTMLDivElement而非文本
解决宾果游戏标记数字数组的问题
- 问题根源:你用
filter的思路错了——filter的作用是筛选符合条件的原元素对象,哪怕你在filter回调里返回文本,它只会判断这个返回值的真假(非空文本为true),最终留下的还是原来的HTMLDivElement,不会转换成文本。 - 正确做法:先筛选出带
marked类的元素,再用map把每个元素转换成对应的文本内容:
写法一(更简洁)
直接用复合选择器一步选出目标元素,再提取文本:
const markedNumbers = Array.from(document.querySelectorAll('.marker.marked')) .map(el => el.textContent.trim());
写法二(分步清晰)
如果需要拆分逻辑,可拆为三步:
// 1. 获取所有marker元素 const allMarkers = Array.from(document.querySelectorAll('.marker')); // 2. 筛选出带marked类的元素 const markedElements = allMarkers.filter(el => el.classList.contains('marked')); // 3. 提取每个元素的文本内容 const markedNumbers = markedElements.map(el => el.textContent.trim());
- 补充:用
trim()是为了去掉数字前后可能存在的空格,保证数组里是干净的数字文本。
内容的提问来源于stack exchange,提问作者apex2022
相关产品推荐
相关产品推荐

