动态行的内联计算

inline calculation on dynamic rows

本文关键字:计算 动态      更新时间:2023-09-26

我没有使用jQuery。。。

我正试图在Change上更新一些总数,但似乎没有像盒子上应该的那样工作。。。我只是JavaScript的新手,所以请温柔一点。

我希望在更改html输入值时动态计算Total列。我正在寻找实时显示和更新的总数,数量*成本。

<script type="text/javascript">
        function addRow(tableID) {
          /* bunch of other stuff (unimportant) */
                var cell3 = row.insertCell(3);
            var element3 = document.createElement("input");
            element3.type = 'text';
            element3.name = 'Qty' + rowCount;
            element3.onChange = function () {
                calcTotal(this)
            };
            cell3.appendChild(element3);
            var cell4 = row.insertCell(4);
            var element4 = document.createElement("input");
            element4.type = 'text';
            element4.name = 'Cost' + rowCount;
            element4.onChange = function () {
                calcTotal(this)
            };
            cell4.appendChild(element4);
            var cell5 = row.insertCell(5);
            var element5 = document.createElement("input");
            element5.type = 'text';
            element5.disabled = true;
            element5.name = 'Total' + rowCount;
            cell5.appendChild(element5);
        }
        function calcTotal(x) {
            var myRow = x.parentNode.parentNode;
            return alert(myRow);
            var c3 = myRow.cells[3];
            var c4 = myRow.cells[4];
            if (c3 && c4) {
                element5.value = c3 * c4;
            }
        }
    </script>

我面临的问题是

                element3.onChange = function () {
                calcTotal(this)
            };

不;实际上,我并没有将onChange插入到html输出中,所以我的想法是,当我在html端更改输入时,它实际上什么都做不了。

输出:

<td><input type="text" name="Qty1"></td>

任何意见都将不胜感激。

JS Fiddle在这里:https://jsfiddle.net/brianramsey/hhLm4d8h/

您可以对输入文本字段使用onkeyup事件。

  element3.onkeyup = function () {
                    calcTotal(this)
                }   

此外,要获得所需的输入字段值:

    var c3 = parseInt(myRow.cells[3].firstChild.value);
    var c4 = parseInt(myRow.cells[4].firstChild.value);

而且,为了避免在调用calcTotal()函数时出现未定义element5的问题:

 function calcTotal(x) {
                var myRow = x.parentNode.parentNode;

                var c3 = parseInt(myRow.cells[3].firstChild.value);
                var c4 = parseInt(myRow.cells[4].firstChild.value);

            if(c3&&c4)
                   myRow.cells[5].firstChild.value = c3 * c4;

            }

演示:https://jsfiddle.net/hhLm4d8h/16/