Ich habe den folgenden Code - es wird verwendet, um ein Dropdown zu laden, wenn der Benutzer auf ein Dropdown mit nur die geladene Standardoption klickt, weil dieses Dropdown ist ziemlich groß und IE doesn ' t so sehr. Hier ist der Code:IE 6 Javascript ersetzen wählen Drop-Down-Problem
function populateDropDown(id, code) {
var currentSelect = document.getElementById(id);
<%--Don't enable the dropdown if it has more than one entry already - assume this to be populated.--%>
if(currentSelect.length == 1) {
currentSelect.remove(0);
var selectedIndex = 0;
for(var index = 0; index < codes.length; index++) {
var newOption = document.createElement('option');
newOption.value = codes[index];
newOption.text = values[index];
try {
currentSelect.add(newOption, null); // standards compliant
}
catch(ex)
{
currentSelect.add(newOption); // IE only
}
if(codes[index] == code) {
selectedIndex = index;
}
}
currentSelect.selectedIndex = selectedIndex;
}
}
Dieser Code funktioniert in Opera 9.x, IE 7 - aber nicht IE 6 (teste ich in Opera, weil ich Opera Dragonfly mag - aber es ist wirklich nur in IE 7 arbeiten und 6).
In IE 6 füllt der Code die Dropdown-Liste, aber er setzt den ausgewählten Wert auf den ersten Wert in der Dropdown-Liste, nicht auf den ausgewählten Wert. Der ausgewählte Wert wird in den anderen beiden genannten Browsern auf den richtigen Wert gesetzt.
Ich bin kein Javascript Guru auf irgendeine Weise - also wenn jemand weiß, warum IE 6 dies tut und wie man es umgehen kann, würde das geschätzt werden. Beachten Sie auch, dass der Kommentar dort ein JSP-Kommentar ist - es wird entfernt, bevor dieses Javascript an den Browser gesendet wird (es ist kein ungültiger Kommentar).
Woher kommt Code in if (Codes [Index] == Code)? –
Sorry, Russ, vergessen, die Signatur hinzuzufügen. Die Signatur ist funktionsName (ID, Code). Der Code stammt von dem ursprünglich ausgewählten Wert über eine JSP-EL-Funktion (daher sollte die Überprüfung nicht das bereits aufgefüllte Dropdown-Menü ausfüllen). Wenn es in diesem Dropdown-Menü nicht mehr als zwei Optionen gibt, gibt es * größere * Probleme !) – MetroidFan2002
Bearbeitet, um die Signatur hinzuzufügen. – MetroidFan2002