2009-03-03 15 views
8

मैं जावास्क्रिप्ट वाले कुछ HTML को जोड़ रहा हूं।जावास्क्रिप्ट शामिल है जिसमें जावास्क्रिप्ट शामिल नहीं है, मैं इसे कैसे चला सकता हूं?

<td onclick="toggleDay('+data+',this,\'tue\');">T</td> 

और

<img src="img/cross.png" onclick="deleteAlarm('+data+');"> 

कोड के इन दो टुकड़े HTML की बड़ी मात्रा में मैं जोड़कर कर रहा हूँ में हैं।

वे ठीक काम करते हैं यदि पेज लोड होने पर पहले से मौजूद हैं लेकिन जब मैं संलग्न नहीं कर रहा हूं।

आप मुझे क्या करने का सुझाव देते हैं? क्या इसे जोड़ने के बाद जावास्क्रिप्ट को फिर से समझने के लिए डीओएम के लिए कुछ प्रकार के अनुरोध की आवश्यकता है?

संपादित करें:

बस कुछ और जानकारी है, मैं, इस समस्या के साथ कर रहा हूँ क्योंकि मैं डेटाबेस के लिए AJAX के साथ कुछ सामान जोड़ रहा है, और सफलता पर मैं जहां यह होने की जरूरत है के लिए एचटीएमएल जोड़कर कर रहा हूँ । किंडा वैसे ही टिप्पणियों के साथ करता है।

EDIT2:

यहां तक ​​कि इसके बारे में सब चर्चा, जवाब के लिए धन्यवाद, यह काम कर रहा हो गया है।

उत्तर

4

मैं इस तरह यह करना चाहते हैं:

प्रथम जोड़ने आईडी अपने html में जिम्मेदार बताते हैं:

<td id="toggleDayCell">T</td> 

<img src="img/cross.png" id="crossImg"> 

फिर जावास्क्रिप्ट कि पेज के ऑनलोड घटना पर चलता है और घटनाओं आप 'से जुड़ जाता है में दिलचस्पी है

PrototypeJS में, यह इस प्रकार दिखाई देंगे:

Event.observe(window, 'load', function(){ 
    if($('toggleDayCell')) { 
    Event.observe($('toggleDayCell'), 'click', function(event){ 
     //do stuff here 
    } 
    } 

    if($('crossImg')) { 
    Event.observe($('crossImg'), 'click', function(event) { 
     //do stuff here 
    } 
    } 
}); 

प्रोटोटाइप (या jQuery) की तरह कुछ का उपयोग करना अच्छा है, क्योंकि यह क्रॉस-ब्राउज़र संगतता का ख्याल रखता है।

1

दस्तावेज़ में एचटीएमएल संलग्न करें तो प्रोग्राम पर ऑटक्लिक घटना को प्रोग्रामिक रूप से जोड़ें।

यह मेरे सिर के ऊपर से है, लेकिन ... मुझे लगता है कि आप इसे इस तरह से कर सकते हैं:

आईई:

Object.onclick = someFuntion 

एफएफ:

Object.addEventListener('click', someFunction); 
+0

और आप यह कैसे करते हैं? – fmsf

0

आप चाहिए आंतरिक HTML या जो भी हो, पर क्लिक करने के बजाय addEventListener('click', /*...*/) का उपयोग कर रहे हों।

आईई addEventListener कुछ और पूरी तरह से कॉल करता है, तो आपको इसके लिए भी क्षतिपूर्ति करनी होगी।

(संपादित करें: आईई यह attachEvent() कॉल यह आशा है कि कुछ उपयोग की है।।)

3

आप AJAX के माध्यम से एचटीएमएल जोड़कर रहे हैं? यदि ऐसा है तो आपको उस जावास्क्रिप्ट को मैन्युअल रूप से eval() करना होगा जिसे आप लौट रहे हैं। आप एक div में प्रतिक्रिया लपेट और कुछ इस तरह कर सकता है:

wrapper.getElementsByTagName("script") 
// for script in wrapper... 
eval(script.innerHTML) 

आप प्रोटोटाइप की तरह एक पुस्तकालय का उपयोग कर रहे हैं, तो यह बहुत आसान हो के रूप में आप evalScripts के जवाब पारित कर सकते हैं होगा() विधि।

+0

मैंने अभी आपकी पोस्ट एक बेताब रातोंरात Google खोज पर पाई है। आपने मेरी समस्या हल की। मुझे तुमसे मोहब्बत है। – adolfojp

+0

+1 लेकिन फिर भी यह कहा गया कि eval से बचा जाना चाहिए, है ना? – fmsf

+0

हां, लेकिन AJAX प्रतिक्रिया में जावास्क्रिप्ट चलाने का कोई अन्य तरीका नहीं है, कम से कम कोई भी जिसे मैं जानता हूं। – robmerica

0

AJAX में कुछ quirks है ... विशेष रूप से आईई के साथ। उदाहरण: आप तालिका तत्व (आईई में) में कुछ भी डालने/अपडेट करने के लिए आंतरिक HTML प्रॉपर्टी का उपयोग नहीं कर सकते हैं। तत्व नोड्स को सम्मिलित/अपडेट/हटाए जाने के लिए डीओएम फ़ंक्शंस का उपयोग करना बेहतर है (या ईवेंट हैंडलर जोड़ें)। आप गतिशील रूप से लोड जावास्क्रिप्ट चलाने के लिए उल्लिखित eval() फ़ंक्शन का उपयोग कर सकते हैं जो DOM ऑब्जेक्ट्स का उपयोग कर दस्तावेज़ को संशोधित करता है।

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