innerHTML beim IE fürn Mac
rainer TMS
- javascript
Hallo,
ich hab ein blödes Problem mit dem innerHTML beim InternetExplorer vom Macintosh; beim Windows IE, Mozilla, Netscape usw. funktioniert es tadellos.
Bei der ganzen Sache geht es um einen Online Shop, bei dem man Artikel in verschiedenen Größen auswählen kann -> artikel_nr[]. Je nach gewählter Größe soll die Menge der noch bestellbaren
Artikel -> menge[] angepasst werden -> das Select-Menü menge[] als innerHTML von qty_select_box wird neu geschrieben.
Jetzt das eigentliche Problem, dass nur beim MacIE auftritt: wenn das Formular nun abgeschickt wird, kommt beim Empfänger-Script menge[] im Post nicht mehr an.
menge und article_nr müssen übrigens [] Arrays sein, weil auf das Empfäger Script auch noch mit mehrElementigen menge, etc. Arrays zugegriffen wird.
Gibts noch ne andere Möglichkeit die <options> zu beeinflussen?
Wenn garnichts klappt: wie kann ich per java (oder php) den MAC-IE filtern, so dass das Script erst garnicht ausgeführt wird?
Vielen Dank für eure Hilfe, Rainer
Achja, der Code:
<script type="text/javascript">
function qty(anr){
var qty;
switch(anr){
case "10081": qty = 3; break;
default: qty = 5;break;
}
var inner_html = '<select name="menge[]">';
for(i = 1; i <= qty; i++){
inner_html += '<option value="' + i + '">' + i + ' </option>';
}
document.getElementById('qty_select_box').innerHTML = inner_html + '</select>';
}
</script>
<select name="artikel_nr[]" onchange="qty(this.value);">
<option value="x">wählen</option>
<option value="10081">L</option>
<option value="10082">XL</option>
</select>
<div id="qty_select_box">
<select name="menge[]">
<option value="1">1 </option>
<option value="2">2 </option>
<option value="3">3 </option>
<option value="4">4 </option>
<option value="5">5 </option>
</select>
</div>
Hallo,
<select name="artikel_nr[]" onchange="qty(this.value);">
also ich benutze hier immer this.options[this.options.selectedIndex].value, denn das "select" hat keinen "value".
Solltest Du weiter Probleme haben, bau zum Debuggen mal ein paar alerts ein. Ansonsten kann man innerHTML auch durch (einige) createElement und appendChild ersetzen.
Gruß, Jürgen
Hallo Jürgen,
Ansonsten kann man innerHTML auch durch (einige) createElement und appendChild ersetzen.
ein vielleicht geeignetes Beispiel dazu findet sich hier: Lauftext per innerHTML und createTextNode.
Grüsse
Cyx23
Hallo,
wobei gerade hier innerHTML überhaupt keinen Sinn macht, da der Lauftext ja keine HTML-Elemente enthalten darf.
Gruß, Jürgen
Hallo Jürgen,
wobei gerade hier innerHTML überhaupt keinen Sinn macht, da der Lauftext ja keine HTML-Elemente enthalten darf.
kann ich so nicht nachvollziehen, meinst du bei Lauftext wäre innerText "sinnmachender"?
Allerdings ist bezogen auf das Ausgangsposting wohl eine entsprechnede Betrachtung bei createTextNode möglich.
Grüsse
Cyx23
Hallo,
kann ich so nicht nachvollziehen, meinst du bei Lauftext wäre innerText "sinnmachender"?
nein, ich meine ...firstChild.nodeValue, so wie im DOM vorgesehen. InnerHTML macht nur Sinn, wenn es sich um HTML handelt und nicht nur um einfachen Text. Ich bin mir auch nicht sicher, ob die Kombination von DOM (getElement...) und DHTML (innerHTML, innerTest, ...) überhaupt erlaubt ist, auch wenn es in den meisten modernen Browsern funktioniert.
Gruß, Jürgen
Hi,
Ich bin mir auch nicht sicher, ob die Kombination von DOM (getElement...) und DHTML (innerHTML, innerTest, ...) überhaupt erlaubt ist,
innerText nicht, aber innerHTML (deswegen nimmt man ja auch bei reinem Text innerHTML)!
auch wenn es in den meisten modernen Browsern funktioniert.
Streiche "den meisten", setze "allen". Oder kennst Du einen, der innerHTML nicht beherrscht?
Gruß, Cybaer
Hallo,
Streiche "den meisten", setze "allen". Oder kennst Du einen, der innerHTML nicht beherrscht?
Nein! Aber mit Worten wie "alle" und "immer" bin ich vorsichtig.
Gruß, Jürgen
Hi,
Nein! Aber mit Worten wie "alle" und "immer" bin ich vorsichtig.
Verständlich. Was das "immer" angeht: Ich teste vorher auch lieber, ob der Browser innerHTML wirklich beherrscht.
Andererseits ist da die "normative Kraft des Faktischen". ;-) Will heißen: Mittlerweile könnte sich wohl ohnehin kein Browserprogrammierer noch erlauben, darauf zu verzichten. :)
Gruß, Cybaer