使用javascript阅读孩子的孩子的内容

问题描述 投票:0回答:4

我想创建一个功能,将价格作为动态内容并计算分期付款。我尝试了几种方法但它们不起作用。不幸的是我没有收到错误信息。

也许你可以帮助我湿透的大脑。非常感谢你提前

var wrapper = document.getElementsByClassName('article-price')[0];
   var secondwrapper = wrapper.getElementsByTagName('span')[0];
   var price = secondwrapper.getElementsByTagName('span')[0];
   
   var installment = document.getElementById('installment');
   installment.innerHTML = (price.innerHTML / 12).toFixed(2);
<span class="article-price">
	<span>
		<span>149,99</span>
    <span>€</span>
	</span>
</span>
<div>your installment is <span id="installment"></span></div>
javascript children
4个回答
0
投票

var price = secondwrapper.getElementsByTagName('span')[0];替换var price = parseFloat(secondwrapper.getElementsByTagName('span')[0].innerHTML.replace(',','.'));以获取span的内容并用点替换逗号以将字符串作为浮点数。如果你不替换用点替换逗号,JavaScript将不会理解'149,99'是一个数字并且只保留'149',因为,不被识别为小数分隔符,而.是。 getElementsByTagName将为您提供整个标签,而不仅仅是您想要的内部价值。然后在最后一行,删除price.innerHTMLprice,因为你已经提前转换了它。

这是一个帮助你的片段

var wrapper = document.getElementsByClassName('article-price')[0];
var secondwrapper = wrapper.getElementsByTagName('span')[0];
var price = parseFloat(secondwrapper.getElementsByTagName('span')[0].innerHTML.replace(',','.'));
var installment = document.getElementById('installment');
installment.innerHTML = parseFloat(price / 12).toFixed(2) + " €";
   
<span class="article-price">
    <span>
        <span>149,99</span>
        <span>€</span>
    </span>
</span>
<div>your installment is <span id="installment"></span></div>

我希望我的回答对你有帮助!


0
投票
var wrapper = document.getElementsByClassName('article-price')[0];
   var secondwrapper = wrapper.getElementsByTagName('span')[0];
   var price = secondwrapper.getElementsByTagName('span')[0];

   var installment = document.getElementById('installment');
   installment.innerHTML = (parseFloat(price.innerHTML) / 12).toFixed(2);
<span class="article-price">
    <span>
        <span>149,99</span>
    <span>€</span>
    </span>
</span>
<div>your installment is <span id="installment"></span></div>

它可能是跨越范围内的逗号。不确定它是否可行,但您可以尝试使用parseFloat,它应该将其读作数字或parseInt;


0
投票

您只需更改最后一行代码:

installment.innerHTML = (parseFloat(price.innerHTML.replace(/\,/g,"")) / 12).toFixed(2);

0
投票

请检查以下可能有用的代码

$(document).ready(function(){
 var wrapper = document.getElementsByClassName('article-price');
  alert(wrapper);
  var secondwrapper = wrapper[0].getElementsByTagName('span')[0];
  alert(secondwrapper.innerHTML);
  var price = secondwrapper.getElementsByTagName('span')[0];
  alert(price.innerHTML);
  var installment = document.getElementById('installment');
 installment.innerHTML = (parseFloat(price.innerHTML) / 12).toFixed(2);
});

而不是包装器,你必须使用包装器[0],它将指向跨度的第零位置,而且你必须将文本更改为浮动

installment.innerHTML = (parseFloat(price.innerHTML) / 12).toFixed(2);
© www.soinside.com 2019 - 2024. All rights reserved.