javascript - 获取 div 内元素(子元素)的 ID 和内部文本
问题描述
我有多个div 代表一些产品,示例如下:
<div class="special" id="special">
<a href="12v.html" class="special-link">
<p class="special-img">
<img src="img/25.png" alt="">
</p>
<h3><span id="pdctName">12v XXXXXXXXXXXXXXX</span></h3>
</a>
<p class="special-info">
<span class="ribbon2 animated swing infinite">
<span>Oferta!</span>
</span>
<a href="#" class="special-categ">Ofertas especiales</a>
<span class="special-price">200,00 €</span>
<del style="margin-top: -9px;">250,00 €</del>
<a href="0#" class="special-add cd-add-to-cart js-cd-add-to-cart">+ Add to cart</a>
</p>
</div>
获取此除法 () 中某些元素的 ID(因此值)的麻烦div id="special"
:例如,我想获取<span id="pdctName">
and的 ID <span class="special-price">
。
触发我的功能的元素是
<a href="0#" class="special-add cd-add-to-cart js-cd-add-to-cart">+ Add to cart</a>
.
我试过document.querySelector('#special span#pdctName').innerText
了,它只适用于这个 div的第一次出现,但我想为选定的部门检索这些元素。
解决方案
首先,您必须在每个 add(+) 按钮上附加事件
然后使用调用父 div 元素this.parentElement.parentElement
然后使用获取值querySelector
function addtocart(){
event.preventDefault();
var spanid = this.parentElement.parentElement.querySelector("a h3 span").id;
var price = this.parentElement.parentElement.querySelectorAll("p span")[2].innerText;
console.log(spanid);
console.log(price);
}
[...document.querySelectorAll(".special-add")].forEach((btn)=>{
btn.addEventListener("click",addtocart);
});
<div class="special" id="special">
<a href="12v.html" class="special-link">
<p class="special-img">
<img src="img/25.png" alt="">
</p>
<h3><span id="pdctName">12v XXXXXXXXXXXXXXX</span></h3>
</a>
<p class="special-info">
<span class="ribbon2 animated swing infinite">
<span>Oferta!</span>
</span>
<a href="#" class="special-categ">Ofertas especiales</a>
<span class="special-price">200,00 €</span>
<del style="margin-top: -9px;">250,00 €</del>
<a href="0#" class="special-add cd-add-to-cart js-cd-add-to-cart">+ Add to cart</a>
</p>
</div>
当数据动态添加到页面时,这是最佳实践。
推荐阅读
- django - 如何在 django Templates href 中使用 vue 对象的数据
- json - 从文本中仅提取 json/dict 或在匹配的括号内获取文本
- python-3.x - 如何让 Pandas 中的数组长度相同?
- angular - 离子显示 {{ data.name }} 仅在数据可用后(来自 HTTP)
- javascript - 当 onPaste 在 contenteditable div 内时,新行将变成空 div,例如, 代替
- c# - 企业库 6 登录到数据库和电子邮件在服务器上不起作用
- python - 在 windows 10 中使用 python 3.7 导入 tensorflow 时出错
- node.js - 获取标头响应 Nuxt Axios
- python - 如何在曲线旁边显示最后一个 Y 轴值?
- angular - 与子组件的角度 ChangeDetectionStategy.OnPush 应用程序混淆