Javascript使用一个函数动态计算多行
Javascript dynamically calculate many row use one function
我有这样的代码:
Qty: <input type="text" name="qty" id="qty" class="txt" value="" />
Price: <input type="text" name="price" id="price" class="txt" value="500" />
Total: <input type="text" name="total" id="total" class="txt" value="" />
Javascript:
$('#qty').keyup(function() {
var quantity = $("#qty").val();
var priceItem = $("#price").val();
var total = quantity * priceItem ;
$("#total").val(total);
});
这只是一排。如何使函数可以用于所有行?
为什么不使用类?它会让你对元素进行更精细的控制,见鬼,它会让编码更容易:)
通过选择器操作id会降低性能,并使代码难以维护。如果您决定在qty
和qty1
中的1
之间添加-
,该怎么办?假设qty
字段为30次,则必须将其更改30次。
以下是您的标记:
Qty:
<input type="text" name="qty" class="txt qty" value="" />
<br/>
Price:
<input type="text" name="price" class="txt price" value="500" />
<br/>
Total:
<input type="text" name="total" class="txt total" value="" />
您的JavaScript:
然后,在您的keyup
方法中:
$('.qty').keyup(function () {
var sibs = $(this).siblings();
var quantity = this.value;
var priceItem = sibs.filter(".price").val();
var total = quantity * priceItem;
sibs.filter(".total").val(total);
});
演示:http://jsfiddle.net/hungerpain/bCKxW/
如果您的input fields id
看起来像qty_1
、price_1
和total_1
那么你可以这样做:
$('input[id^=qty]').keyup(function() {
var quantity = $(this).val();
var idAttr = $(this).attr('id').split('_');
var i = idAttr[1];
var priceItem = $("#price_" + i).val();
var total = quantity * priceItem ;
$("#total_" + i).val(total);
});
相关文章:
- 用javascript中的param执行动态函数
- 节点.js:尝试侦听设置为动态函数的变量时出错
- 如何将动态函数绑定到动态事件
- 使用动态函数调用创建 JS 库
- 在 Jscript 中为 Q.all() 构建一个动态函数数组
- 带有传递参数的 jquery UI 对话框动态函数
- JavaScript 动态函数名称
- 动态函数/对象名称
- ExtJs4 如何在循环中创建动态函数
- 循环内部的动态函数:i var不可见
- 数组到动态函数:是否使用eval
- 使用动态函数名编写Javascript新对象实例
- 如何使用javascript构建动态函数
- 使用具有动态函数绑定的测试间谍的好方法
- AddEventListener对匿名函数的动态函数引用
- Javascript为对象添加动态函数
- Javascript动态函数
- 动态函数调用不变
- 将静态javascript函数转换为动态函数
- 从ng-click调用动态函数