2012-01-19 14 views
7

पर ईवेंट श्रोता संलग्न करें मेरे पास एक ही नाम के साथ कई रेडियो बटन हैं। इस तरह:जावास्क्रिप्ट के माध्यम से रेडियो बटन

<form name="formA"> 
<input type="radio" name="myradio" value="A"/> 
<input type="radio" name="myradio" value="B"/> 
<input type="radio" name="myradio" value="C"/> 
<input type="radio" name="myradio" value="D"/> 
</form> 

अब मुझे सभी रेडियो बटनों पर जावास्क्रिप्ट के माध्यम से ईवेंट श्रोता जोड़ना होगा। तो नीचे स्यूडोकोड गलत है, तो कृपया मुझे बताओ कैसे है-

var radios = document.forms["formA"].elements["myradio"]; 
    for(radio in radios) { 
    radio.onclick = function() { 
     alert(radio.value); 
    } 
} 

उत्तर

9

के लिए क्या करने के लिए जावास्क्रिप्ट में छोरों में चाबियाँ, नहीं मान। पाश काम करने के लिए के लिए पाने के लिए, यह सोचते हैं आप अपने सरणी में नहीं जोड़ा है कस्टम गुण, है न चाहते हैं:

for(radio in radios) { 
    radios[radio].onclick = function() { 
     alert(this.value); 
    } 
} 

लेकिन आप हमेशा पाश एक नियमित रूप से साथ एक सरणी पाश गलती से बचने के लिए के लिए करना चाहिए कस्टम-वर्धित समेकित गुणों सहित:

var radios = document.forms["formA"].elements["myradio"]; 
for(var i = 0, max = radios.length; i < max; i++) { 
    radios[i].onclick = function() { 
     alert(this.value); 
    } 
} 
+0

तुम क्यों चाहिए "* हमेशा * पाश पाश के लिए एक नियमित के साथ एक सरणी" के लिए सामान्य उपयोग कर सकते हैं? – ojrask

+0

@ojrask - पुराना उत्तर, लेकिन मूल रूप से कस्टम-जोड़ा गुण, यदि जोड़ा गया है, तो पुनरावृत्त किया जा सकता है। लेकिन निश्चित रूप से ES6 के साथ आपके पास 'लूप के लिए' है जिसका उपयोग आप सरणी या किसी भी पुनरावर्तनीय के साथ कर सकते हैं। –

+0

आह हाँ मैं देखता हूं। उस बारे में सोचा नहीं था। शायद उस पर विस्तृत करने के लिए उत्तर संपादित करें? :) – ojrask

5

आप केवल एक श्रोता जोड़ सकते हैं जो व्यक्तिगत श्रोताओं की बजाय सभी रेडियो बटनों को सुनता है।

jQuery का उपयोग कर, आप इसे इस

$(document).ready(function(){ 
    $('input[type=radio]').click(function(){ 
     alert(this.value); 
    }); 
}); 

Demo

की तरह कर सकता है एक आईडी के साथ एक फार्म के भीतर ही रेडियो आईडी formA

$(document).ready(function(){ 
     $('#formA input[type=radio]').click(function(){ 
      alert(this.value); 
     }); 
    }); 

के साथ ही रेडियो के लिए myradio

$(document).ready(function(){ 
    $('input[type=radio]').click(function(){ 
     if (this.id == "myradio") 
      alert(this.value); 
    }); 
}); 

Demo

+2

1. मुझे शुद्ध जावास्क्रिप्ट कोड चाहिए। 2. मैं ईवेंट श्रोता को केवल उन रेडियो पर संलग्न करना चाहता हूं, जिनके नाम "myradio" (विचार) पर नाम विशेषता है। लेकिन मुझे लगता है कि उपरोक्त कोड पूरे दस्तावेज़ में सभी रेडियो को फ़ंक्शन संलग्न करेगा। :( – Acn

+0

@BigFatPig आप इसे केवल उस विशेष रूप से रेडियो के साथ संलग्न कर सकते हैं, या यहां तक ​​कि रेडियो जो एक विशेष आईडी है – xbonez

+0

@BigFatPig संपादन देखें – xbonez

5

एक अच्छी शुरुआत है, लेकिन इस तरह for..in का उपयोग नहीं करते के रूप में यह सब गणनीय गुण से अधिक पुनरावृति रहेगा और यदि वे सभी तत्वों का प्रतिनिधित्व करते देखने के लिए जांचा नहीं है।

बहुत बेहतर

एक सूचकांक का उपयोग करें:

for (var i=0, iLen=radios.length; i<iLen; i++) { 
    radios[i].onclick = function() {...}; 
} 
1
for(var property in object) { ... } 

गुण को खोजने के लिए वस्तुओं को भी लूप में प्रयोग किया जाता है। सरणी के लिए आप पाश

for(var i=0; i< radios.length; i++) { 
    var radio = radios[i]; 
    .... 
} 
संबंधित मुद्दे