2009-10-17 14 views
7

अगर मैं जब तत्व क्लिक किया जाता है की तरहपासिंग मूल्यों onclick

for (i= 1; i < 100; i++) { 
    var my_element = document.createElement ("td"); 
    row.appendChild (my_element); 
    my_element.onclick = function() {my_function (i)); 
} 

तो एक पाश का उपयोग कर HTML तत्वों की एक पूरी बहुत कुछ, बनाने के लिए, मैं के मूल्य my_function के लिए पारित हमेशा 100 है, क्या इसकी परवाह किए बिना तत्व इसे बुला रहा है। मैं इस के आसपास

my_element.id = "something"+i; 
my_element.onclick = function (e) {my_function (e.target.id)}; 

का उपयोग करके काम किया है (इंटरनेट एक्सप्लोरर के लिए, target जरूरतों srcElement होने के लिए, जाहिरा तौर पर।) मुझे पता है कि करने के लिए आईडी जोड़े बिना समारोह बनाने के लिए किसी भी तरह से है कि क्या वहाँ उत्सुक हूँ इस तरह का तत्व।

उत्तर

8

पाश से प्रत्येक यात्रा के साथ i परिवर्तन का मूल्य। You need a closure to capture the value of i:

(function(i) { 
    my_element.onclick = function() {my_function (i)}; 
}(i)) 
+0

आपकी ब्रैकेटिंग गलत है लेकिन इस विचार ने काम किया। धन्यवाद। –

0

अगर मैं तुम्हें थे मैं हर तत्वों पर jQuery के (या प्रोटोटाइप या कि उपलब्ध जो कुछ भी जे एस चौखटे)

का उपयोग करेगा आप उदाहरण के लिए MyID जैसी विशेषताओं जोड़ना चाहिए ताकि जब आप पर आप इसे पुनर्प्राप्त कर सकते हैं पर क्लिक किया था।

for(i=1; i ++ ; i<100){ 
    var myelement = "<td myid='something"+i+"' class='myTD'></td>" ; 
    row.append(myelement); 
} 

.... 

$(document).ready(function(){ 
    $('.myTD').click(function(){ 
    var id = $(this).attr('myid'); 
    my_function(id); 
    }); 

}); 

मैं अपने वेब एप्लिकेशन :) पर इस चाल किया

+0

आपका उत्तर पूरी तरह गलत है और प्रश्न के बिंदु को याद करता है। –

1

आप एक समारोह है जो आप बनाता हैंडलर समारोह लिखते हैं, आप नए गुंजाइश जो कि सुनिश्चित करें कि आप जिस नंबर पर आप चाहते आप देता है का उपयोग कर सकते हैं। उदाहरण के लिए:

function BuildHandler (i) { return function() { alert(i); }; 

for (i= 1; i < 100; i++) { 
    var my_element = document.createElement ("td"); 
    row.appendChild (my_element); 
    my_element.onclick = BuildHandler(i); 
} 
+0

यह एक बहुत अच्छा विचार है। धन्यवाद। –

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