2012-02-15 9 views
17

पर आधारित तालिका कॉलम के लिए सभी मानों को समेटें I एक विशिष्ट वर्ग के आधार पर एक टीडी में सभी मानों का योग पुनर्प्राप्त करने का प्रयास कर रहा हूं। कोड किसी भी त्रुटि को फेंक नहीं देता है लेकिन मेरा योग "0" के परिणामस्वरूप रहता है।कक्षा

क्या संख्यात्मक मानों को किसी विशेष तरीके से निर्दिष्ट किया जाना चाहिए? मैंने यहां कुछ अन्य उत्तरों को देखा जहां से कोड का अनुकरण किया गया है, और मुझे अपने और उनके बीच कोई वास्तविक अंतर नहीं दिख रहा है, इसलिए मैं उलझन में हूं कि मेरा काम क्यों नहीं कर रहा है।

यहाँ एक ट्यूटोरियल मैं संदर्भ के लिए पीछा किया है: http://viralpatel.net/blogs/2009/07/sum-html-textbox-values-using-jquery-javascript.html

यहाँ है मेरी जावास्क्रिप्ट

$(document).ready(function(){ 
$('.price').each(function() { 
    calculateSum(); 
}); 
}); 

function calculateSum() { 

var sum = 0; 
//iterate through each td based on class and add the values 
    $(".price").each(function() { 

     //add only if the value is number 
     if(!isNaN(this.value) && this.value.length!=0) { 
      sum += parseFloat(this.value); 
     } 

    }); 
$('#result').text(sum);  
}; 

यहाँ मेरी एचटीएमएल

<table border="1"> 
<tr> 
<th>Item</th> 
<th>Price</th> 
</tr> 
<tr> 
<td>Banana</td> 
<td class ="price">50</td> 
</tr> 
<tr> 
<td>Apple</td> 
<td class ="price">100</td> 
</tr> 
</table> 

<div id="result"></div> 

उत्तर

34

आप के बाद से this.value के बजाय text() (उपयोग करना चाहते हैं <td> के पास "मान" नहीं है):

var sum = 0; 
// iterate through each td based on class and add the values 
$(".price").each(function() { 

    var value = $(this).text(); 
    // add only if the value is number 
    if(!isNaN(value) && value.length != 0) { 
     sum += parseFloat(value); 
    } 
}); 

इसके अलावा, आप अपने .price तत्वों से अधिक पाशन कर रहे हैं (calculateSum बुला) कई बार। आप

$(calculateSum); 
+0

वह शानदार था धन्यवाद। मुझे नहीं पता था कि आप जिस तरीके से वर्णन करते हैं उसमें तत्वों पर लूपिंग के लिए कोड को छोटा कर सकते हैं। वह बहुत उपयोगी था। धन्यवाद –

+0

ठीक है, मैंने लूपिंग कोड को छोटा नहीं किया। आप दो बार लूपिंग कर रहे थे; आपके 'ऑनलोड' हैंडलर में और फिर 'गणना गणना()' फ़ंक्शन के भीतर ही। मैंने पूर्व को हटा दिया। मैंने 'तैयार' हैंडलर परिभाषा शॉर्टकट की। –

+0

यह मेरी मदद की, धन्यवाद रोब – StreetCoder

3

साथ

$(document).ready(function(){ 
    $('.price').each(function() { 
     calculateSum(); 
    }); 
}); 

जगह ले सकता है मैं एक JQuery प्लगइन, Sumtr, कि यह बहुत अच्छी तरह से अगर आप एक सारांश पंक्तियों चाहते संभालती है।

प्लगइन के साथ आपका example यहां है।

+0

यह वास्तव में साफ है। काश मैं जल्द ही इस पुस्तकालय को देखा था। यह मुझे कुछ समय बचा लेगा। किसी भी तरह जवाब देने के लिए धन्यवाद। भविष्य में संदर्भ के लिए मैं इस पर नजर रखूंगा। –

+2

बस इसे कल बनाया गया। :-) – Larsenal

+1

यह बहुत अच्छा काम करता है, यह कई स्तंभों को भी संभालता है, जो वास्तव में मैं देख रहा था। बहुत धन्यवाद! – hanzolo