javascript - 动态行的内联计算

标签 javascript

我没有使用 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/

关于javascript - 动态行的内联计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223885/

相关文章:

javascript - jQuery UI 自动完成 - 无结果消息

javascript - 如何使用 create-react-app 从外部模块导入 svg react 组件?

javascript - 服务器端如何使用Ajax发送无格式文件数据?

javascript - 谷歌条形图中的注释

javascript - 如何根据以前的值更新 MongoDB 文档?

javascript - 实现 Redux-Persist 时使用 AnyAction react Redux Typescript 错误

javascript - 为使用 dbpedia 的 sparql 查询生成 url

Javascript加载另一个js文件

javascript - while(count!==3) 无法检查回调状态

JavaScript:css 切换到暗模式