2009-10-27 10 views
26

मुझे एक स्क्रिप्ट मिली है जहां मैं गतिशील रूप से चुनिंदा बक्से बना रहा हूं। जब वे बॉक्स बनाए जाते हैं, तो हम टॉगल चयन() नामक फ़ंक्शन को इंगित करने के लिए नए बॉक्स के लिए एक्सचेंज ईवेंट सेट करना चाहते हैं।जावास्क्रिप्ट के माध्यम से एक चयन बॉक्स में एक अस्थायी घटना कैसे जोड़ें?

मुझे विनिमय ईवेंट बनाने के लिए सिंटैक्स सही नहीं लगता है। क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं? यह एक त्रुटि फेंक नहीं है, लेकिन काम नहीं करता है, या तो।

col = dataRow.insertCell(0); 
    var transport_select = document.createElement('select'); 
    transport_select.id = transport_select_id; 
    transport_select.options[0] = new Option('LTL', 'LTL'); 
    transport_select.options[1] = new Option('FTL', 'FTL'); 
    transport_select.onChange = function(){toggleSelect(transport_select_id);}; 
    col.appendChild(transport_select); 

उत्तर

25

transport_select.setAttribute("onchange", function(){toggleSelect(transport_select_id);}); 

setAttribute

जोड़ें या onchange

+3

धन्यवाद में (आशा के रूप में) को समाप्त समस्या! इसे "ऑन चेंज" से "ऑनचेंज" में बदलकर इसे ठीक किया गया। – user77413

+1

IE के कुछ संस्करण सेटएट्रिब्यूट के साथ परेशानी के लिए जाने जाते हैं, इसलिए transport_select.onchange = function() {...} दृष्टिकोण अधिक असफल-सुरक्षित लगता है;) – lucaferrario

34

साथ onChange की जगह की कोशिश यहाँ पर W3C DOM Level 2 Events Specification आधारित घटना संलग्न का एक और तरीका है:

transport_select.addEventListener(
    'change', 
    function() { toggleSelect(this.id); }, 
    false 
); 
8

बदल देते हैं:

साथ
transport_select.onChange = function(){toggleSelect(transport_select_id);}; 

:

transport_select.onchange = function(){toggleSelect(transport_select_id);}; 

' सी' परिवर्तित करें >> पर

'' परिवर्तित करें पर


आप addEventListener का भी उपयोग कर सकते हैं।

1

आप prototype.js का उपयोग कर रहे हैं तो आप ऐसा कर सकते हैं:

transport_select.observe('change', function(){ 
    toggleSelect(transport_select_id) 
}) 

यह पार ब्राउज़रों

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

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