2009-10-27 4 views
26

Ich habe ein Skript, in dem ich Auswahlfelder dynamisch erstelle. Wenn diese Felder erstellt werden, möchten wir festlegen, dass das Ereignis onchange für das neue Feld auf eine Funktion namens toggleSelect() verweist.Wie fügt man ein onchange-Ereignis per Javascript in eine Auswahlbox ein?

Ich kann nicht scheinen, die Syntax richtig zu bekommen, um das Ereignis onchange zu erstellen. Kann mir jemand sagen, was ich falsch mache? Es wirft keinen Fehler, aber auch nicht.

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); 

Antwort

25

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

setAttribute

oder versuchen hinzufügen onChange mit onchange

+3

Dank! Das Ändern von "onChange" zu "onchange" hat es behoben. – user77413

+1

einige Versionen von IE sind bekannt, Probleme mit SetAttribute zu haben, so scheint der transport_select.onchange = function() {...} Ansatz mehr ausfallsicher;) – lucaferrario

34

Hier ist ein weiterer Weg, um das Ereignis des Anbringens basierend auf W3C DOM Level 2 Events Specification ersetzt:

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

ersetzen:

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

mit:

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

auf 'C 'hange >> auf' c' hange


Sie können addEventListener auch verwenden.

1

Wenn Sie prototype.js verwenden, dann können Sie dies tun:

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

Diese beseitigen (als Hoffnung), das Problem in Quer Browser

Verwandte Themen