molily: Unzuverlässiges Bilderaustauschen

Beitrag lesen

function buttonsent(button) {

var img = button.firstChild;

Das liefert je nach Browser den Textknoten, nicht das img-Element. Verwende besser button.getElementsByTagName("img")[0] oder entferne Leerzeichen und Zeilenumbrüche zwischen den Tags.

button.onclick = null;

Wieso setzt du dann ein onclick-Attribut?

// but send form this time!
  parent = button.parentNode;
  while (parent.tagName.toLowerCase() != "form") {
    parent = parent.parentNode;
  }

Das ist unnötig - ein Formularfeld-Elementobjekt hat eine Eigenschaft namens form, die auf das form-Elementobjekt verweist.

button.form liefert dir bereits das Formular

parent.submit();

Das verstehe ich auch nicht, du hast einen Submit-Button in einem Formular. Wenn du nicht onclick="buttonsent(this); return false" notierst, also die [link:http://redaktion.selfhtml.org/selfhtml-preview/javascript/einbindung.html#standardaktion@title=Standardaktion unterdrückst], dann wird das Formular automatisch abgesendet. D.h. du brauchst submit() gar nicht manuell aufrufen
Wenn du es vorher beim mousedown absendest und die Action löscht, dann kann es sein, dass der Browser das von JavaScript ausgelöste Absenden unterbricht und das Formular nochmal nach null versendet. Ich weiß nicht, ob das die Fehlerursache ist, ich würde es jedenfalls nicht darauf ankommen lassen und klassisch lösen.

/* disable form */
  parent.action = null;

Macht das Sinn? Welchen Zweck soll das erfüllen?

[code lang=html]
<button onclick="setLocation('...')" onmousedown="buttonsent(this);">
  <img src="/images/warenkorb/warenkorb_button.png" alt="bestellen" />
</button>


> Das onclick script ist vom Shopsystem (Magento) und sollte vermutlich drin bleiben.  
  
?? Aber du überschreibst den Handler doch? Dann kannst du es auch löschen.  
  
Mathias

-- 
[JavaScript-Erweiterung für das SELFHTML-Forum](http://forum.de.selfhtml.org/js/doku/)