Читать содержание ребенка от ребенка с помощью JavaScript - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел бы создать функцию, которая получает цены в виде динамического контента и рассчитывает платеж в рассрочку.Я пробовал несколько подходов, но они не работают.К сожалению, я не получаю сообщение об ошибке.

Может быть, вы могли бы немного помочь моему промокшему мозгу.Большое спасибо заранее

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>

Ответы [ 4 ]

0 голосов
/ 27 февраля 2019

Пожалуйста, проверьте код ниже, это может помочь

$(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);
0 голосов
/ 27 февраля 2019

Вам нужно изменить только последнюю строку кода:

installment.innerHTML = (parseFloat(price.innerHTML.replace(/\,/g,"")) / 12).toFixed(2);
0 голосов
/ 27 февраля 2019

Замените var price = secondwrapper.getElementsByTagName('span')[0]; на var price = parseFloat(secondwrapper.getElementsByTagName('span')[0].innerHTML.replace(',','.'));, чтобы получить содержимое вашего диапазона, и замените запятую на точку, чтобы получить строку как число с плавающей запятой.Если вы не замените запятую точкой, JavaScript не поймет, что «149,99» - это число, и сохранит только «149», поскольку , не распознается как десятичный разделитель, а . - это,getElementsByTagName даст вам весь тег, а не только значение внутри, как вы хотели.Затем в последней строке удалите price.innerHTML в price, потому что вы уже преобразовали его ранее.

Вот фрагмент кода, чтобы помочь вам

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 голосов
/ 27 февраля 2019
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;

...