2011-08-06 6 views
16

मेरे पास एक जावास्क्रिप्ट फ़ंक्शन है जो मेरे फ़ॉर्म में एक छिपे हुए इनपुट फ़ील्ड को उस संख्या के साथ अपडेट करना चाहिए जो फ़ंक्शन कहलाता है हर बार बढ़ता है।getElementsByName() काम नहीं कर रहा है?

यह getElementById() लेकिन क्योंकि मैं अपने प्रपत्र नया स्वरूप मैं तत्व को एक व्यक्ति के पहचान प्रदान करने के लिए php समारोह उपयोग नहीं कर सकते था इसलिए सब मेरे पास है उस तत्व के लिए एक अनूठा नाम है के साथ मूल रूप से काम किया।

तो इसके बजाय मैंने तत्व को संशोधित करने के लिए जावास्क्रिप्ट से getElementsByName() का उपयोग करने का निर्णय लिया।

window.onload=function() 
{ 

//function is activated by a form button 

var staffbox = document.getElementsByName('staff_counter'); 
        staffbox.value = s; 


       s++; 
} 

जब समारोह कहा जाता है मैं Firebug पर कोई त्रुटि हो रही है और इनपुट क्षेत्र नहीं मिल रहा है:

यहाँ उस तत्व

<input type="hidden" value="" name="staff_counter"> 

यह मेरा जावास्क्रिप्ट कोड है के एचटीएमएल है इसे दिया गया एक मूल्य।

यह getElementById() के साथ काम कर रहा था, लेकिन अचानक यह getElementsByName() के साथ क्यों काम नहीं करता है?

  • -मैंने जांच की है कि यह दस्तावेज़ में एकमात्र अद्वितीय तत्व है।
  • मैं जब समारोह

यहाँ सक्रिय करने Firebug पर किसी भी त्रुटि के लिए जाँच की है कोड मैं Codeigniter से उपयोग तत्व

// staff_counter is name and the set_value function sets the value from what is 
//posted so if the validation fails and the page is reloaded the form element does 
// not lose its value 

echo form_hidden('staff_counter', set_value('staff_counter')); 

धन्यवाद

+0

प्रारंभ कैसे किया जाता है? – yokoloko

+0

इसे जांचें http://stackoverflow.com/a/43795346/5289704 –

उत्तर

27

document.getElementsByName() एक सरणी देता है बनाने के लिए, इसलिए आपको इसे एक इंडेक्स द्वारा एक्सेस करना होगा: document.getElementsByName('staff_counter')[0] (इस पर निर्भर करता है कि इनमें से कितने हैं)।

आपके पास length संपत्ति तक पहुंच है ताकि यह जांच सके कि कितने तत्व मिलान किए गए थे।

+0

केवल एक तो मैं सरणी में स्थिति 0 अनुमान लगा रहा हूं, धन्यवाद! – sqlmole

+4

यह ** ** एक सरणी नहीं है। यह एक ['नोडलिस्ट '] है (https://developer.mozilla.org/en-US/docs/Web/API/NodeList#Why_is_NodeList_not_an_Array.3F)। बड़ा अंतर। – Pacerier

3

बस एक ही समस्या थी, मैंने इसे सरणी पर एक साधारण लूप के साथ हल किया। नीचे दिया गया कोड 'btnSubmit' के नाम से सभी बटनों को जाकर अक्षम कर देगा।

for (var i=0;i<document.getElementsByName('btnSubmit').length;i++){ 
    document.getElementsByName('btnSubmit')[i].disabled=true; 
} 
+0

चाल प्राप्त करें ... चक्र var _elements = document.getElementsByName ('btnSubmit'); (var i = 0; i <_elements.length; i ++) { _elements [i] .disabled = true; } – andrej