我有一组包含价格的元素:
<em class="price">$859</em>
<em class="price">$159</em>
<em class="price">$850</em>
<em class="price">$350</em>
<em class="price">$560</em>
<em class="price">$200</em>
<em class="price">$250</em>
<em class="price">$900</em>
我如何获取<em>
代码及console.log
代码中的值?
我知道我可以执行[0].childNodes[0].nodeValue
来获取第一个,只需更改childNodes
中索引的值以抓住我想要的任何其他值。
有没有办法在不使用循环的情况下一次获取所有文本节点值?
为什么我想要这样做的大局是我需要将<em>
标记中的每个数字乘以一个百分比,取该计算值并将其插入到新生成的元素中。
有没有办法说(sudo代码)“将<em>
标签的所有实例与类price
一起使用,将文本乘以x
,然后插入新计算的值使用名为<em>
“的类的new-price
标记?
修改 这就是我目前使用它的方式:
$(document).ready(function() {
function setCheckPrice(){
var productPrice = document.getElementsByClassName('p-price');
console.log((productPrice)[0].childNodes[0].nodeValue);
}
setCheckPrice();
});
这不会在控制台中记录任何内容。
在文档加载时使用jQuery来应用所需的Javascript。
答案 0 :(得分:0)
使用循环可能最适合您想要做的事情并使用jQuery,因为您已经加载了它。试试这个:
function setCheckPrice() {
$('.price').each(function(key, val) {
var price = $(val).html().replace('$', '');
var newPrice = parseInt(price) * 10;
$(val).after('<em class="new-price">$' + newPrice + '</em>');
});
}
setCheckPrice();
这将取每个价格,将其乘以10并将其插入原始价格之后的新em
。
要定位单个价格,您只需删除每个循环,例如:
function setCheckPrice() {
var element = $('.price:nth-of-type(5)');
var price = $(element).html().replace('$', '');
var newPrice = parseInt(price) * 10;
$(element).after('<em class="new-price">$' + newPrice + '</em>');
}
setCheckPrice();
您可以通过更改5来定位其他元素。