2010-11-19 19 views
9

में एक ही नोड के साथ कई बार एपेंड चाइल्ड का उपयोग करना मैं कई रेटिंग वाले फॉर्म के लिए एक फॉर्म सत्यापन स्क्रिप्ट लिख रहा हूं, और मैं थोड़ा सा टेक्स्ट डालना चाहता हूं जो कहता है "रेटिंग दें!" प्रत्येक रेटिंग के लिए उपयोगकर्ता याद आती है। मैंने ऐसा करने के लिए नीचे दिया गया कोड लिखा है, लेकिन मैं एक समस्या में भाग रहा हूं जहां give_rating नोड केवल फॉर्म पर अंतिम नोड में संलग्न है। मुझे पता है कि ऐसा इसलिए है क्योंकि appendChild मूल रूप से इसे डुप्लिकेट करने के बजाय एक नोड चलाता है, और मैंने क्लोन नोड का उपयोग करके इसे हल करने का प्रयास किया लेकिन यह सिर्फ मेरे जेएस को पूरी तरह से तोड़ देता है।जेएस

वैसे भी, यहां कोड है। मैं क्या गलत कर रहा हूं?

आपकी मदद के लिए धन्यवाद,

क्रिस

var give_rating = document.createElement('span'); 
give_rating.className='small red'; 
give_rating.innerHTML = '<strong> &nbsp;Give a rating!</strong>'; 

document.getElementById('rating1').appendChild(give_rating); 
document.getElementById('rating2').appendChild(give_rating); 

जब मैं कोड give_rating ऊपर कोड का उपयोग केवल 'rating2' के साथ जोड़ दिया गया है।

document.getElementById('rating1').appendChild(give_rating.cloneNode(True)); 
document.getElementById('rating2').appendChild(give_rating.cloneNode(True)); 

जब मैं इस कोड का उपयोग करता हूं तो पूरी स्क्रिप्ट विफल हो जाती है। मैं "रेटिंग दें!" का उदाहरण कैसे जोड़ूं मेरे फॉर्म पर प्रत्येक रेटिंग के लिए उपयोगकर्ता भरने में विफल रहता है?

उत्तर

4

जावास्क्रिप्ट केस-संवेदी है: Truetrue (निचला मामला) होना चाहिए।

+0

ओएमजी कैसाब्लांका, मैंने सचमुच इस प्रश्न को सबमिट करने के बाद फायरबग डाउनलोड किया, कंसोल चलाया और इसे समझ लिया। आपके प्रतिक्रिया के लिए धन्येवाद। जेएस मुझे पागल ड्राइव :) – Chris

0
  1. आप केवल एक बार बनाए गए HTML तत्व या दस्तावेज़ टुकड़े डाल सकते हैं। तो, आपको क्लोन नोड() फ़ंक्शन को कॉल करना होगा।
  2. जावास्क्रिप्ट केस-संवेदी है। तो, यह cloneNode(True) के बजाय cloneNode(true) होना चाहिए।
  3. आप F12 दबाकर ब्राउज़र के जावास्क्रिप्ट डीबगर (क्रोम और आईई/एज दोनों) को चालू कर सकते हैं। फिर आप देख सकते हैं कि आपकी स्क्रिप्ट के साथ क्या होता है।