代码之家  ›  专栏  ›  技术社区  ›  Helge Wadewitz

使用javascript读取子级的内容

  •  0
  • Helge Wadewitz  · 技术社区  · 6 年前

    我想创建一个函数,以动态内容获取价格并计算分期付款。我试过几种方法,但都不管用。不幸的是我没有收到错误消息。

    也许你能帮我一把。提前多谢

    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>
    0 回复  |  直到 6 年前
        1
  •  0
  •   Bambou    6 年前

    替换 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>

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

        2
  •  0
  •   Wiplash    6 年前
    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;

        3
  •  0
  •   Manveer Singh    6 年前

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

    installment.innerHTML = (parseFloat(price.innerHTML.replace(/\,/g,"")) / 12).toFixed(2);
    
        4
  •  0
  •   chandra shekhar joshi    6 年前

    请检查下面的代码可能会有帮助

    $(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);
    });
    

    您必须使用wrapper[0]来代替wrapper,它将指向范围的第0个位置,而且您还必须将文本更改为float

    installment.innerHTML = (parseFloat(price.innerHTML) / 12).toFixed(2);