JavaScript数组操作问题:为何无法显示目标div元素?
Why isn't my JavaScript code showing all 5 div elements?
让我帮你排查问题——你的代码没法正常显示div主要是两个关键问题:
1. 数组包含不存在的元素,导致执行中断
你写的循环是for (var i = 0; i < 6; i++),这会生成一个包含0,1,2,3,4,5的数组。当forEach遍历第一个元素0时,document.getElementById(0)找不到对应id的div(你的div id是1到5),会返回null。紧接着尝试访问null.style就会抛出错误,直接终止后续所有代码的执行,后面的div自然也不会被设置显示样式。
2. 循环范围超出实际div数量
你的循环生成了6个元素,但实际只有5个div(id1到5),多出来的5虽然对应存在的div,但前面的0已经导致代码中断,根本轮不到它执行。
修正方案
你只需要调整数组内容,让它只包含实际存在的div id(1到5),这里给你两种简单的修改方式:
方式一:调整循环的起始与结束值
var minutes_array = []; // 从1开始循环到5,直接生成目标id数组 for (var i = 1; i <= 5; i++) { minutes_array.push(i); } minutes_array.forEach(myFunction); function myFunction(item, index) { // 额外加个判断,避免后续如果数组有无效值时出错 const targetDiv = document.getElementById(item); if (targetDiv) { targetDiv.style.display = 'flex'; } }
方式二:保留原循环起始,修改推入的值
var minutes_array = []; // 循环5次,每次推入i+1,得到1-5的id数组 for (var i = 0; i < 5; i++) { minutes_array.push(i + 1); } minutes_array.forEach(myFunction); function myFunction(item, index) { const targetDiv = document.getElementById(item); if (targetDiv) { targetDiv.style.display = 'flex'; } }
另外,建议养成先检查DOM元素是否存在再操作的习惯,这样即使数组里不小心混入了无效id,也不会影响其他元素的处理。
内容的提问来源于stack exchange,提问作者T. Hægh
相关产品推荐
相关产品推荐

