это мой код на jsfiddle
$(document).ready(function(){
//iterate through each textboxes and add keyup
//handler to trigger sum event
$("#targetPrice1").each(function() {
$(this).keyup(function(){
calculateSum();
});
});
});
function calculateSum() {
var sum = 0;
//iterate through each textboxes and add the values
$("#targetPrice1").each(function() {
var targetprice = $("#targetPrice1").val();
var share = $("#share1").text();
var cb = $("cb1").text();
//add only if the value is number
if(!isNaN(targetprice) && targetprice.length!=0) {
sum = parseFloat(targetprice) * share - cb;
}
});
//.toFixed() method will roundoff the final sum to 2 decimal places
$("#rowSum1").html(sum.toFixed(2));
}
то, что я пытаюсь сделать, - это сделать расчет по отношению к значениям в каждой строке. (например, как это работает в строке 1)
но я хочу повторять каждую строку. (имя класса вниз по строкам просто увеличивается, например share1 → share2 от row1 до row2)
как сделать код, чтобы он работал?
Вам не нужно делать сложный цикл, просто сделайте это -
$(document).ready(function () {
$('.targetPrice').keyup(function() {
var sum = 0;
var targetPrice = $(this).val();
var share = parseInt( $(this).closest('tr').find('.share').text() );
var cb = parseInt( $(this).closest('tr').find('.cb').text() );
if (!isNaN(targetPrice) && targetPrice.length != 0) {
sum = parseFloat(targetPrice) * share - cb;
}
$(this).closest('tr').find(".rowSum").html(sum.toFixed(2));
});
});
Обратите внимание, что я дал каждой ячейке строки одни и те же классы, чтобы вам не приходилось беспокоиться об id - поэтому ваша разметка должна быть исправлена, чтобы сделать это таким образом.
Вот как это делается. Я прокомментировал это, чтобы вы поняли :)
http://jsfiddle.net/jabark/C4Pn8/3/
$(".targetPrice").each(function () { // Loop through all items will class of targetPrice
$(this).keyup(function () {
calculateSum($(this)); // Send the input through to the function
});
});