Html 使用angularjs,如何对文本框执行数学运算,并在键入值时查看结果?

Html 使用angularjs,如何对文本框执行数学运算,并在键入值时查看结果?,html,angularjs,frontend,Html,Angularjs,Frontend,我有一个HTML文件,有两个文本框,一个用于值,另一个用于数量。底部的结果文本将值乘以数量并显示结果 <div ng-app="adder" ng-controller="addcontrol"> <table> <tr> <th>Value</th><th>Quantity</th> </tr> <

我有一个HTML文件,有两个文本框,一个用于值,另一个用于数量。底部的结果文本将值乘以数量并显示结果

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
其目的是在屏幕上显示所有成对文本框行的总和。为此,我有一个“添加新”按钮,它不断添加额外的文本框对

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
HTML上出现的第一组文本框反映了包含属性“val”和“qty”的对象“numbers”数组的大小。相同的值绑定到文本框

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
但是,只有第一组值添加到屏幕上。当我不断添加新的文本框并输入新的值时,结果的值应该相应地改变,但事实并非如此

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
HTML代码

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
}))

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>

我做错了什么?

在您的代码中,总和的计算只执行一次

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
您需要添加作用域的监视或将函数绑定到
ng change
事件,以便在更改数字时更新总和

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
例如,您可以执行以下操作:

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
<div ng-app="adder" ng-controller="addcontrol">
    <table>
    <tr>
        <th>Value</th><th>Quantity</th>
    </tr>
    <tr ng-repeat="number in numbers">
        <td><input type="text" ng-change="update()" ng-model="number.val"></td>
        <td><input type="text" ng-change="update()" ng-model="number.qty"></td>
        <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
    </tr>
    </table>
    <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
</div>

控制器中的代码仅激活一次(渲染视图时)。因此,在您有机会添加任何行之前,您的总和只计算一次。您需要做的是将您的计算放入一个函数中,以便可以根据需要重复调用它

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
Tong的回答基本上是正确的,但我认为这是一个更好的方法:

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
 <div ng-controller="addcontrol">
    <table>
    <tr>
        <th>Value</th><th>Quantity</th>
    </tr>
    <tr ng-repeat="number in numbers">
        <td><input type="text" ng-model="number.val"></td>
        <td><input type="text" ng-model="number.qty"></td>
        <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>
    </tr>
    </table>
    <input type="button" ng-click="add()" value="Add new">Result : {{total()}}
  </div>
定义一个
total
函数,该函数在数组中循环并返回适当的总和。然后可以将该函数绑定到视图中的结果字段。这样做的好处是,您不必记住在任何可能导致总数更改的地方调用
update()
(如文本框上的
ng change
,以及
deleteNumber
函数)。总数只是自动更新

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>

这里有一个。

除了问题之外,我知道这一点,但您可以在单个输入字段中执行任意算术运算:
    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>

{{$eval(表达式)}

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>

根据派利努克斯的回答:这似乎很明显,但在这里。如果要添加2个表达式,请使用以下命令:

{{$eval(表达式1)+$eval(表达式2)}

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>

Php

    <div ng-app="adder" ng-controller="addcontrol">
        <table>
        <tr>
            <th>Value</th><th>Quantity</th>
        </tr>
        <tr ng-repeat="number in numbers">
            <td><input type="text" ng-model="number.val"></td>
            <td><input type="text" ng-model="number.qty"></td>
            <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
        </tr>
        </table>
        <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
    </div>
</body>
</html>
  • 创建名为students的数据库(使用cmd)
  • 创建一个名为tbl_students_info的表,列为:
    • id,数据类型为int,大小为11,自动递增并设置为主键
    • Firstname,数据类型为varchar,大小为30
    • Middlename,数据类型为varchar,大小为30
    • Lastname,数据类型为varchar,大小为30
    • 联系人,数据类型为int,大小为11
    • 房屋地址,数据类型为int,大小为50
  • 创建包含5个文本框和1个按钮的网页。第一个文本框表示名字,第二个文本框表示中间名,第三个文本框表示姓氏,第四个文本框表示联系人,最后一个文本框表示住址,按钮用于将这些文本框中的输入数据保存到数据库
  • 棱角的

        <div ng-app="adder" ng-controller="addcontrol">
            <table>
            <tr>
                <th>Value</th><th>Quantity</th>
            </tr>
            <tr ng-repeat="number in numbers">
                <td><input type="text" ng-model="number.val"></td>
                <td><input type="text" ng-model="number.qty"></td>
                <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
            </tr>
            </table>
            <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
        </div>
    </body>
    </html>
    
  • 创建一个计算器,用于计算2个数字的和、2个数字的乘积、2个数字的差和2个数字的商。网页必须包含2个文本框和4个操作按钮
  • 创建一个计算三角形面积的网页。必须有2个文本框和一个用于计算面积的按钮
  • 创建一个计算用户年龄的网站。必须有一个文本框和一个按钮,文本框用于输入出生年份,按钮用于计算年龄。注:不需要确切的月份

  • Help TT

    是的,就复杂性而言,这将是一个更好的解决方案。我的答案基本上是尝试使用OP的逻辑。这三个例子的逻辑基本上是相同的。这只是在哪里以及如何触发计算的问题。
        <div ng-app="adder" ng-controller="addcontrol">
            <table>
            <tr>
                <th>Value</th><th>Quantity</th>
            </tr>
            <tr ng-repeat="number in numbers">
                <td><input type="text" ng-model="number.val"></td>
                <td><input type="text" ng-model="number.qty"></td>
                <td><input type="button" ng-click="deleteNumber($index)" value= "Delete"></td>pp',[]);
            </tr>
            </table>
            <input type="button" ng-click="add()" value="Add new">Result : {{sum}}
        </div>
    </body>
    </html>