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

原生JS替代jQuery:获取类下指定ID元素属性的问题咨询

解决原生JS获取指定容器内元素属性的问题

嘿,我来帮你搞定这个问题!你遇到的错误原因其实很清晰:document.getElementsByClassName()返回的是一个HTMLCollection(类似数组的元素集合),而不是单个DOM元素,所以它根本没有getElementById这个方法,这就是你看到document.getElementsByClassName(...).getElementById is not a function报错的原因。

下面给你两种可行的解决方案,根据你的实际场景选择:

方案一:直接通过ID获取(推荐)

按照HTML规范,页面上的id是全局唯一的,所以你完全可以跳过父容器,直接获取目标元素:

// 获取目标元素
const przecenajsElem = document.getElementById('przecenajs');
// 获取元素属性的两种方式:
// 1. 用getAttribute获取自定义属性或标准属性
const customAttr = przecenajsElem.getAttribute('data-discount');
// 2. 直接访问标准属性(比如id、class、src等)
const elemId = przecenajsElem.id;

方案二:限定在指定容器内查找(适用于特殊场景)

如果你确实需要在class为form-basket的元素内部查找(比如页面存在不符合规范的重复id),可以先拿到父容器,再用querySelector做范围查找:

// 获取第一个class为form-basket的元素(如果有多个,可遍历HTMLCollection)
const formBasket = document.querySelector('.form-basket');
// 先判断父容器是否存在,避免报错
if (formBasket) {
  // 在父容器内部查找id为przecenajs的元素
  const przecenajsElem = formBasket.querySelector('#przecenajs');
  if (przecenajsElem) {
    // 示例:获取data属性
    const priceAttr = przecenajsElem.getAttribute('data-price');
    console.log(priceAttr);
  }
}

这里要注意:getElementById是document专属的方法,DOM元素本身并没有这个方法,所以不能通过父元素调用它来查找内部元素,querySelector才是支持范围查找的正确方式。

内容的提问来源于stack exchange,提问作者Wini the Pooh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:25:17