获取元素的文本节点并使用Javascript

时间:2016-09-14 20:51:30

标签: javascript

我有一组包含价格的元素:

<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。

1 个答案:

答案 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来定位其他元素。