我正在努力改变我网站上滑块的一些元素
我的滑块代码如下所示:
<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”类的任何建议?干杯
答案 0 :(得分:22)
您目前的尝试有两个问题;
getElementsByClassName
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
。
答案 1 :(得分:5)
document.querySelectorAll('.cl1 .sl_price');
这将选择cl1中所有嵌套的sl_price元素。如果你想修改更多的cl(即cl1,cl2,cl3),只需在它们中添加一个公共类,例如cl。
答案 2 :(得分:2)
你应该这样做(如果不使用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>";
}
}
答案 3 :(得分:1)
如果使用Jquery,则代码比本机Javascript短。
$('.cl1 .sl_price').html("from only £00.00<br>");
这是小提琴:
答案 4 :(得分:0)
编辑:这是错误的,因为它没有考虑到给出了两个类名。
我建议使用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>";
}
答案 5 :(得分:-2)
我相信你需要做的是这样的事情:
document.getElementsByClassName('cl1').getElementsByClassName('sl_price')[0].innerHTML="from only £00.00<br>";
现在你正在做的方式将获得具有类cl1和sl_price的元素。如果你链接你的方法,你将告诉它在文档对象中查找cl1作为类的元素,返回具有该子集的对象,然后在sl_price类的元素中查找该子集。然后,您必须指定索引,因为document.getElementsByClassName将返回符合您要求的元素数组。该数组不具有属性array.innerHTML,但其索引中包含的对象将为。