[英]Javascript select nested class element
我正在更改我网站上的滑块元素
我的滑块代码如下所示:
<div class="cl1">
<h1>Some heading</h1>
<div class="sl_descr">Some description</div>
<div class="sl_price">from only €00.00<br></div>
</div>
<div class="cl2">
<h1>Some other heading</h1>
<div class="sl_descr">Some other description</div>
<div class="sl_price">from only €00.00<br></div>
</div>
<div class="cl3">
<h1>yet some heading</h1>
<div class="sl_descr">yet Some description</div>
<div class="sl_price">from only €00.00<br></div>
</div>
我想在货币变化时改变价格。 为此,我想将 javascript 与 getElementsByClassName 和innerHTML 一起使用。 但是我的 javascript 不能正常工作。 这里是
document.getElementsByClassName('cl1 sl_price').innerHTML="from only £00.00<br>";
关于如何为每个“cl”元素单独处理“sl_price”类的任何建议? 干杯
getElementsByClassName
返回元素的集合(列表)(因此不会有innerHTML
属性)
您可以尝试document.querySelector(".cl1 .sl_price")
代替(采用 css 选择器并返回第一个匹配项)
在https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelector阅读更多
最终结果将是这样的;
document.querySelector('.cl1 .sl_price').innerHTML = "from only £00.00<br>";
注意:我假设您只想匹配单个元素。 如果没有,您应该查看@Bommox 的回答和querySelectorAll
。
document.querySelectorAll('.cl1 .sl_price');
这将选择 cl1 中的所有嵌套 sl_price 元素。 如果您希望修改更多 cl(即 cl1、cl2、cl3),只需向所有这些类添加一个公共类,例如 cl。
你应该这样做(如果不使用 jQuery):
我使用了“for”,因为如果它可能不止一个 cl1 或 sl_price 在它们之中,我不知道。
var nodes = document.getElementsByClassName("cl1");
for(var i = 0; i < nodes.length; i++) {
var node = nodes[i].getElementsByClassName("sl_price");
for(var j = 0; j < node.length; i++) {
node.innerHTML="from only £00.00<br>";
}
}
如果您使用 Jquery,则代码比原生 Javascript 短。
$('.cl1 .sl_price').html("from only £00.00<br>");
这是小提琴:
编辑:这是错误的,因为它没有考虑给出两个类名。
我建议使用 JQuery 来做这样的事情,当你尝试做一些更复杂的事情时,这会让事情变得更容易。 然而,这里的实际问题是getElementsByClassName
返回一个HTMLCollection
元素,并且在其上设置innerHTML
并没有在其元素上设置它。 以下代码应该可以工作:
var elements = document.getElementsByClassName('cl1 sl_price');
for (var i = 0; i < elements.length; i++) {
elements[i].innerHTML = "from only £00.00<br>";
}
我相信你需要做的是这样的:
document.getElementsByClassName('cl1').getElementsByClassName('sl_price')[0].innerHTML="from only £00.00<br>";
您现在的做法将获得同时具有类 cl1 和 sl_price 的元素。 如果你链接你的方法,你会告诉它在文档对象中查找 cl1 作为类的元素,返回一个带有该子集的对象,然后在该子集中查找带有 sl_price 类的元素。 然后您必须指定一个索引,因为 document.getElementsByClassName 将返回一个符合您要求的元素数组。 该数组不会有属性 array.innerHTML,但包含在其索引中的对象会有。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.