2012-02-29 11 views
5

मैं एक बटन (वर्ग) के HTML में इस तरह सूची है -जावास्क्रिप्ट कोड के भीतर से HTML बटन को ईवेंट हैंडलर्स जोड़ने के लिए कैसे

<td><button id="18" ></button></td> 
    <td><button id="28" ></button></td> 
    <td><button id="38" ></button></td> 
      ... 

इससे पहले, प्रत्येक बटन के लिए, मैं बटन के भीतर कोड डाल करने के लिए किया था स्वयं ही टैग एक ईवेंट हैंडलर जोड़ने के लिए, इस तरह -

<button id="18" onclick="squareWasClicked(event)"> 

    function squareWasClicked(event) 
    { 
     var element = event.target; 

     // more code 
    } 

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

function assignEventsToSquares() 
    { 
    var i,j; 

    for(i=1;i<=8;i++) 
     { 
     for(j=1;j<=8;j++) 
     { 
      var squareID = "" + i + "" + j; 
      var square = document.getElementById(squareID);   
      square.onclick = squareWasClicked(); 
     } 
     } 
    } 

लेकिन यह बस squareWasClicked() फ़ंक्शन को कॉल करता है। तो मैं इसे इवेंट हैंडलर के रूप में कैसे जोड़ूं ताकि स्क्वायर क्लिक होने पर फ़ंक्शन लागू किया जा सके? साथ ही, मैं

 square.onclick = squareWasClicked(event); 

ईवेंट जावास्क्रिप्ट कोड में नहीं पता है। कृपया मदद करे।

उत्तर

5
square.onclick = squareWasClicked(); 

हो जाएगा यह आपके क्लिक फ़ंक्शन को कॉल करें और अपने तत्व की घटना श्रोता है, जो नहीं है कि आप क्या चाहते करने के लिए परिणाम प्रदान करती है। () एस निकालें ताकि फ़ंक्शन स्वयं असाइन हो जाए। इसलिए, यह इस

square.onclick = squareWasClicked; 
+0

धन्यवाद! वह इतना संक्षिप्त था! फिर addEventListener का उपयोग क्यों किया जाता है? क्या यह पुराना वाक्यविन्यास है? – CodeBlue

+1

'addEventListener' एक * नया * वाक्यविन्यास है (डीओएम 2 में उभरा है, जैसा कि आप देख रहे हैं डीओएम 0 श्रोताओं के विपरीत।) यदि आप डोम 2 का उपयोग नहीं कर रहे हैं, तो आप गायब हैं! :) –

5

element.addEventListener() का उपयोग करें (DOM 2 Events spec से उत्पन्न)। आपके मामले में यह

document.getElementById("18").addEventListener("click", squareWasClicked, false); 
+0

एक तरफ ध्यान दें पर की तरह दिखना चाहिए, करने के लिए [कल्पना] अनुसार (http://www.w3.org/TR/html4/types.html#type-name), _ "आईडी और NAME टोकन को एक अक्षर ([ए-ज़ा-जेड] के साथ शुरू होना चाहिए) और इसके बाद किसी भी अक्षर, अंक ([0-9]), हाइफ़न (" - "), अंडरस्कोर (" _ "), कोलन (":"), और अवधि ("।")। "_ –

+0

आईई के पुराने संस्करणों (आईई 9 से पहले) के लिए, आपको 'attachEvent()' का उपयोग करने की आवश्यकता होगी क्योंकि वे 'addEventListener' का समर्थन नहीं करते हैं। – jfriend00

+0

ठीक है, इसके लिए एक [क्रॉस-ब्राउज़र समाधान] (http://dustindiaz.com/rock-solid-addevent) है। –

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