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

JS新手求助:获取div中input标签总数时报错TypeError的解决方法

解决TypeError: element.getElementsByTagName is not a function错误

错误原因

document.getElementsByClassName("card-body") 返回的是HTMLCollection(类数组对象,包含所有匹配该类名的元素),而非单个DOM元素。getElementsByTagName是单个DOM元素的专属方法,类数组对象没有这个方法,因此触发报错。

解决方案

你的HTML代码无需修改,只需调整JS代码,以下三种方法任选其一:

方法1:获取HTMLCollection的第一个元素

因为页面中只有一个card-body元素,直接取数组下标[0]拿到单个DOM元素:

const element = document.getElementsByClassName("card-body")[0];
const nodes = element.getElementsByTagName("input");
document.getElementById("total-inputs").innerHTML = nodes.length;

方法2:使用querySelector获取单个元素(推荐)

querySelector会直接返回第一个匹配选择器的DOM元素,语法更简洁:

const element = document.querySelector(".card-body");
const nodes = element.getElementsByTagName("input");
document.getElementById("total-inputs").innerHTML = nodes.length;

方法3:直接统计目标元素数量(一步到位)

如果仅需统计card-body下的input总数,可直接用querySelectorAll获取所有匹配元素并取长度:

const inputCount = document.querySelectorAll(".card-body input").length;
document.getElementById("total-inputs").innerHTML = inputCount;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:10:36