You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用通过template模板动态添加的删除按钮数组?

问题原因

你代码中存在变量赋值逻辑错误,是删除按钮无法禁用的直接原因:
你写的var wala = document.getElementsByClassName("minus").length是将wala赋值为删除按钮的总数量(数字类型),后续循环中访问wala[i]本质是访问数字的索引属性,无法获取到按钮节点,自然没法设置禁用状态。你之前能拿到正确的按钮数量,是因为你直接读取了集合的length属性,只是错误把长度值赋值给了用来遍历的变量,才导致后续操作失效。

修复方案

修正finalCheck函数中遍历删除按钮的部分即可:

function finalCheck() {
  document.getElementById("review-button").disabled = true;
  document.getElementById("add").disabled = true;
  document.getElementById("wala").disabled = true;
  // 修正:先获取所有删除按钮的节点集合,再用集合长度做循环边界
  const deleteBtns = document.getElementsByClassName("minus");
  for(let i = 0; i < deleteBtns.length; i++){
    deleteBtns[i].disabled = true;
  }
  // 后续原有逻辑保持不变
  var final = document.getElementById("last-check").content;
  var copy = document.importNode(final,true);
  document.getElementById("bigGuy").appendChild(copy);
  var totalHours = 0;
  for (i = 0; i < content.length; i++){
    totalHours = totalHours + content[i][3];
    console.log(totalHours);
  }
  document.getElementById("total-hours").innerHTML = totalHours;
}

可选简化写法(forEach版)

getElementsByClassName返回的是HTMLCollection类型,转成数组后可以直接用forEach遍历,不需要手动写循环:

// 禁用所有删除按钮
Array.from(document.getElementsByClassName("minus")).forEach(btn => btn.disabled = true)

// 用户选择No需要恢复按钮可用时,执行以下代码
Array.from(document.getElementsByClassName("minus")).forEach(btn => btn.disabled = false)

内容的提问来源于stack exchange,提问作者Finrod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:24:04