为什么代码无法在控制台打印计算器的每个按钮元素?
代码失效原因
代码无法正常遍历输出按钮,由两个独立问题共同导致:
- 脚本执行时机过早
你将calculator.js的引入放在<head>标签内,浏览器解析执行该脚本时,页面<body>内的所有DOM元素还未完成渲染,此时执行DOM选择代码只能拿到空的元素集合,自然无法获取到按钮节点。 - 元素选择、遍历逻辑有遗漏
- 遍历循环初始值设置为
i=1,直接跳过了元素集合里索引为0的第一个按钮(平方根√按钮) - 仅通过
global类名筛选元素,会漏掉4个未添加global类的按钮:数字0、小数点.、删除键Del、等号=
- 遍历循环初始值设置为
修复方法
- 调整脚本加载时机,二选一即可:
- 把
<script src="calculator.js" type="text/javascript"></script>这行代码从<head>移到整个页面内容的末尾、</body>标签之前 - 保留脚本在head的位置,给script标签添加
defer属性,告诉浏览器等DOM解析完成后再执行脚本:<script src="calculator.js" type="text/javascript" defer></script>
- 把
- 修正JS里的选择和遍历逻辑,不要只筛选带
global类的元素,遍历从索引0开始:
// 选中页面所有按钮类型的input const allButtons = document.querySelectorAll('input[type="button"]') // 从第一个元素(索引0)开始完整遍历 for(let i = 0; i < allButtons.length; i++){ // 同时输出按钮节点和按钮对应的值,方便核对标识 console.log(allButtons[i], `按钮值:${allButtons[i].value}`) }
内容的提问来源于stack exchange,提问作者Alestaire Caines
相关产品推荐
相关产品推荐

