O ile wiem, jest to tylko uszkodzone w Internet Explorerze. Mam skrypt, który tworzy wiele dynamicznych elementów select i dodaje do nich zdarzenie onchange. Zdarzenie onchange jest uruchamiane w Firefoksie bez żadnego problemu, ale w przeglądarce Internet Explorer nigdy się nie uruchamia. Korzystając z paska narzędzi dla programistów, widzę, że DOM zawiera poprawne wydarzenie, po prostu nigdy się nie uruchamia. Mam problem sprowadza się do następującego kodu:Dynamicznie dodany element SELECT nie uruchamia zdarzenia onchange w Internet Explorerze
<html>
<head>
<script language="javascript">
function addSelect() {
var se = document.createElement('select');
se.setAttribute("onchange", "alert('Dynamic')");
se.options[0] = new Option("1", "1");
se.options[1] = new Option("2", "2");
se.options[2] = new Option("3", "3");
se.options[3] = new Option("4", "4");
var plh = document.getElementById("ph");
plh.appendChild(se);
}
</script>
</head>
<body onload="addSelect()">
<select name="something" onchange="alert('Static')">
<optgroup label="set1">
<option value="1">1</option>
<option value="2">2</option>
</optgroup>
<optgroup label="set2">
<option value="3">3</option>
<option value="4">4</option>
</optgroup>
</select>
<div id="ph">
</div>
</body>
</html>
Statyczny wiadomość alert pojawia się w porządku, ale dynamiczny nic nie robi w programie Internet Explorer. Jestem niemal pewien, że widziałem tę pracę gdzie indziej, ale nie mogę znaleźć innych przykładów. Czy ktokolwiek widzi/zna sposób, aby to zadziałało?
Albo użyć jQuery powiązać zdarzenie/spust :) –
pierwotną emisję wykorzystuje jQuery i stara się traktować jako standardowe atrybuty zdarzenia był częścią problemu. Dlaczego IE nie tylko parsuje ciągi znaków to poważny problem ... –
Tak, miałem problemy, gdy próbowałem użyć funkcji .attr() jQuery, aby przypisać zdarzenie onchange. Bezpośrednie przypisanie DOM elem.onchange = function() {blah; } miło działało. – kdawg