【问题标题】:cloneNode and total the value of all nodes (parent+childs). JavascriptcloneNode 和所有节点(父+子)的总和。 Javascript
【发布时间】:2015-09-19 06:58:44
【问题描述】:

我想汇总所有输入的值,但一开始只有一个输入元素,然后您使用按钮添加克隆。其实我有两个问题: 1.如何将克隆节点始终放置在它之前的节点之下。 2.如何对所有节点的值求和。

代码如下:

    function nambahData() {
        var a = document.getElementById("harga");
        var b = a.cloneNode(false);
        document.getElementById("form").appendChild(b);
    }

    function ditotal() {
        var x = document.getElementById("harga").value;
        var y = document.getElementById("harga").childNode.value;
        document.getElementById("total").value = parseInt(x) + parseInt(y);
    }
</script>

<div id="form">
    <input id="harga" type=number>
    <br>
</div>
<button onclick="nambahData()">add data</button>
<br>
<button onclick="ditotal()">total all</button>
<input id="total" type=number>

【问题讨论】:

  • 查看此处Javascript Append Child AFTER Element 将克隆置于所需位置。
  • 谢谢..这解决了我的第一个问题!但第二个? :D
  • var inputElems = document.getElementById('form').getElementsByTagName('input'); 后跟 var total=0, i, n = inputElems.length; 后跟一个循环。 for (i=0;i&lt;n;i++){total += parseInt( inputElems[i].value );}

标签: javascript


【解决方案1】:

希望这对你有所帮助..

window.nambahData = function() {
        var a = document.getElementsByName("harga");
        var b = a[0].cloneNode(false);
        document.getElementById("form").appendChild(b);
    }

window.ditotal = function() {
    var totalItems = 0;
    
    for(i=document.getElementsByName("harga").length-1;i>=0;i--)
    {
        var item = document.getElementsByName("harga")[i];
        totalItems += parseFloat(item.value);
    }
    document.getElementById("total").value = totalItems;
}
.inputStyle{
    display:block;
}
<div id="form">
    <input name="harga" type="number" class="inputStyle">
</div>
<button onclick="nambahData()">add data</button>
<br>
<button onclick="ditotal()">total all</button>
<input id="total" type=number>

【讨论】:

  • @Kishore - 请注意,调用 document.getElementsByName 是一个相当昂贵的操作,实际上不应该在循环的每次迭代中执行,就像评估这个数组的长度一样,你'已经巧妙地评估了一次 - 许多人评估这个而不是将值填充到变量中,聪明地做或像你做的那样,向后迭代数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
相关资源
最近更新 更多