JavaScript函数失效求助:替换removeAttribute为setAttribute仍无效
JavaScript函数故障排查建议
先贴出你的代码:
let mainEl = element.parentElement; let price = parseInt(mainEl.querySelector('p span').innerText); let name = mainEl.querySelector('h3').innerText; let vegetables = document.querySelectorAll('.single-item') AllTotal -= price; document.querySelector('.total').innerText=`Total: $${AllTotal}`; mainEl.remove(); vegetables.forEach(function(vege){ if (vege.querySelector('.si-content h3').innerText === name){ vege.querySelector('.actions button').removeAttribute("disabled"); vege.querySelector('.actions button').innerText = "Dodaj"; vege.querySelector('.actions input').value = 0; }; });
以下是具体排查步骤:
验证核心变量与DOM元素有效性
在代码关键位置添加console.log,比如打印mainEl、price、name、vegetables.length,确认:mainEl不是null,确保element.parentElement指向正确的父元素price是有效数字(parseInt如果解析失败会返回NaN,会导致AllTotal变成NaN)vegetables能选中预期数量的元素,避免选择器拼写错误
修正文本匹配逻辑
文本对比时容易出现空格、换行或大小写差异,导致匹配失败。把对比逻辑改成:if (vege.querySelector('.si-content h3').innerText.trim() === name.trim())用
trim()去除首尾空白字符,提升匹配准确性。优化disabled属性处理方式
布尔属性disabled直接操作DOM元素的属性比用removeAttribute/setAttribute更可靠,把修改按钮状态的代码改成:vege.querySelector('.actions button').disabled = false;确认AllTotal的作用域与初始值
检查AllTotal是否在函数外部正确声明并初始化(比如let AllTotal = 0;),如果是未声明的全局变量或初始值为字符串,减法运算会出错。检查循环内DOM选择器正确性
在循环内部添加console.log(vege.querySelector('.si-content h3'), vege.querySelector('.actions button')),确认这些选择器能找到对应的元素,避免因为类名拼写错误导致无法修改元素状态。
内容的提问来源于stack exchange,提问作者Mertin27
相关产品推荐
相关产品推荐

