2011-01-05 6 views
6

मान लीजिए मैं एक फार्म के निम्न अनुभाग हैकैसे getElementsByName साथ चेक बॉक्स और उनके मान का उपयोग करने के

<td> 
<p> 
    <input type="checkbox" name="faddon" onchange="iaddon()" value="89.00" /><br /> 
    <input type="checkbox" name="faddon" onchange="iaddon()" value="29.00" /><br /> 
    <input type="checkbox" name="faddon" onchange="iaddon()" value="49.00" /><br /> 
    <input type="checkbox" name="faddon" onchange="iaddon()" value="39.00" /> 
</p> 
</td> 

<td> 
<p> 
    <input type="checkbox" name="faddon" onchange="iaddon()" value="69.00" /><br /> 
    <input type="checkbox" name="faddon" onchange="iaddon()" value="69.00" /><br /> 
    <input type="checkbox" name="faddon" onchange="iaddon()" value="69.00" /><br /> 
    <input type="checkbox" name="faddon" onchange="iaddon()" value="69.00" /> 
</p> 
</td> 

हर बार जब उपयोगकर्ता का चयन करता है या एक चेकबॉक्स विचयनित करता है, मैं स्क्रिप्ट की जरूरत को चर ऐड-ऑन पुनर्गणना के लिए चेक किए गए बक्से के सभी मूल्यों का कुल। इस कोड को मैं पहली बार के साथ आया है, लेकिन यह मेरे लिए काम करने के लिए प्रकट नहीं होता है:

function iaddon() { 
addon=0; 
av=document.getElementsByName("faddon"); 
for (e=0;e<av.length;e++) { 
    if (av[e].checked==true) { 
    addon+=av[e]; 
    } 
    } 
} 

स्क्रिप्ट NaN ऐड-ऑन के मूल्य के रूप में लौटने रहता है। सबसे पहले, मुझे आश्चर्य हुआ कि क्या जावास्क्रिप्ट तारों को स्ट्रिंग्स के रूप में पढ़ रहा था और पूर्णांक नहीं था, लेकिन ए [x] * 1 को एवी [ई] जोड़कर इसे ठीक नहीं किया। फिर, मैंने getElementsByName में थोड़ा और पढ़ा और इसके बारे में संभवतः एक सामान्य सरणी नहीं है, बल्कि इसके बजाय एक नोडलिस्ट।

मैं जावास्क्रिप्ट में नया हूं और इस नोडलिस्ट को कैसे छेड़छाड़ करने के घंटों के बाद पता नहीं लगा सकता। किसी भी मदद की सराहना की है। मैं अलग-अलग टेबल कोशिकाओं में 8 चेकबॉक्स रखना चाहता हूं, इसलिए बाल नोड्स जैसे कुछ का उपयोग करना बिल्कुल ठीक नहीं होगा, जहां तक ​​मैं कह सकता हूं। मैं इस बिंदु पर किसी भी jQuery को साफ़ करना चाहता हूं ... मैं अभी भी सीख रहा हूं और मैं यह सुनिश्चित करना चाहता हूं कि मैं समझता हूं कि इसे सादे पुराने जावास्क्रिप्ट में पहले कैसे किया जाए। धन्यवाद!

+0

संभावित डुप्लिकेट: //stackoverflow.com/questions/11599666/get-the-value-of-checked-checkbox) – Siraj

उत्तर

6

आपको मूल्य संपत्ति का उपयोग करने और इसे किसी संख्या में पार्स करने की आवश्यकता है। उदाहरण के लिए:

function iaddon() 
{ 
    addon = 0; 
    for (e = 0; e < av.length; e++) 
    { 
     if (av[e].checked == true) 
     { 
      addon += parseInt(av[e].value, 10); 
     } 
    } 
} 
5

av [e] तत्व को वापस नहीं करेगा, addon के लिए तत्व का मूल्य नहीं है।

मेरा मानना ​​है कि आप उपयोग करना av[e].value

भी ध्यान रखें कि जब से तुम समारोह के शुरू में addon=0 सेट ऐड-ऑन का मूल्य हमेशा ही av[e].value का मूल्य समारोह कॉल के दौरान हो जाएगा चाहते हैं।

function iaddon() { 
addon=0; 
av=document.getElementsByName("faddon"); 
for (e=0;e<av.length;e++) { 
    if (av[e].checked==true) { 
    addon+=av[e].value; 
    } 
    } 
} 
+3

और भगवान के प्रेम और सभी चीजों के लिए पवित्र कृपया var के साथ अपने चर घोषित करें। –

+0

@steve_c ... आप एक अच्छा मुद्दा बनाते हैं! + 1 –

+0

ऐसा लगता है कि यह हल हो गया है, दोस्तों! एक दम बढ़िया! संदर्भ के लिए, मुझे आपकी मदद के बाद * 1 का उपयोग करना पड़ा। ऐसा लगता है कि उपयोगकर्ता ने एक से अधिक चेकबॉक्स का चयन करने के बाद यह मानों को एकसाथ स्ट्रिंग कर रहा था। इसके अलावा, संदर्भ के लिए, क्या मुझे शुरुआत में केवल वैरिएबल घोषित करने के लिए var का उपयोग करना चाहिए या कभी भी मैं इसमें कोई बदलाव कर सकता हूं? ऊपर दिए गए var addon को पहले स्क्रिप्ट में घोषित किया गया था ... – mendahu

2

btw, निकला हुआ js

<input type="checkbox" name="faddon" onchange="iaddon()" value="89.00"/> 

दोनों js और html कोड एक साथ लिखा जाता है के लिए, बहुत अपने कोड बनाए रखने के लिए अवसादग्रस्तता है।

कोशिश विनीत js कोड लिखने के लिए की तरह:

एचटीएमएल में:

<input id="index1" type="checkbox" name="faddon" value="89.00"/> 

js में:

$('index1').click(function() { 
    // Edit your function 
}); 
[चेक किया चेकबॉक्स का मूल्य प्राप्त करें?] (Http के
+1

अंतिम उदाहरण शुद्ध जावास्क्रिप्ट नहीं है, लेकिन एक एड-ऑन जिसे JQuery कहा जाता है। –

+0

आपको JQuery के बजाय सभी संबंधित तत्वों के लिए ईवेंट हैंडलर को स्थापित करने के लिए शुद्ध जेएस का उपयोग करने के लिए इसे संपादित करना चाहिए, केवल एक तत्व के लिए जो प्रश्न का हिस्सा भी नहीं है। – handle

संबंधित मुद्दे