Also nicht so dass onClick-Ereignis auf dynamisch erstellte DOM - 'a' - element
Habe ich Probleme mit dem internet Explorer. Ich habe einen link, der dupliziert einen Datei-upload-element in einem Formular. Der code, die Duplikate auch fügt einen hyperlink auf das duplizierte upload-element entfernen soll das duplizierte element ein einfaches entfernen diesen link.
Das Problem ist, dass dieser code läuft wunderbar im firefox, aber es läuft nicht bei allen im IE. Vergessen, wie der code geschrieben wird - das onClick-Ereignis, das ich anfügen, um das element nicht Feuer an alle!
Ich bin momentan dabei, mein link entfernen element, wie dies in der Funktion:
var a = document.createElement('a');
a.setAttribute('href', "javascript:void(0);");
a.setAttribute('class', 'delete');
a.setAttribute('onClick', 'removeThisElement(idOfParentContainer, this)');
container.appendChild(a);
Dies funktioniert gut in firefox, aber es nicht in Feuer auf alle in IE. Ich habe in der dom-mit IE-Inspektor und den link erbracht hat, ist nett aber die Klasse angehängt, um es nicht gerendert oder angewendet worden und hat sich weder des Ereignisses, das ausgelöst wird, obwohl es körperlich wurde, angehängt an den link auf die html. Für einige Grund das onClick-Ereignis wird nicht einmal brennen, egal, welchen code ich in Sie setzen, auch wenn es eine Warnung. Bin ich etwas fehlt hier. 🙁
Großen Teil einer der das Problem gelöst durch das anbringen von Veranstaltungen mit AddEvent jedoch, warum nicht die css-Darstellung meine ich die Klasse angebracht, um das element nicht Rendern an alle, die für einige seltsame Grund 🙁
Guter Rat in der Tat - ich bin meinen code umschreiben um zu vermeiden, die setAttribute-Funktion und stattdessen die Portierung aller in dieser DOM-manipulation mit jquery. Vielen Dank für die hilft Jungs
Du musst angemeldet sein, um einen Kommentar abzugeben.
- Event-Handler werden nicht DOM-Attribute, das Attribut vorhanden ist, die im markup nur - ich bin nicht sicher, warum FF oks diese. Ich werde gehen Forschung, die nun Ursache ist, will ich wissen.Update: scheint mit gemischten Gefühlen, ob eventhandlers sind DOM-gültige Attribute oder nicht. Sieht für mich wie das ist MS Schuld, da Sie intern behandeln Sie nicht als Attribute, während die HTML-Spezifikation gibt an, dass Sie sehr viel sind. Die direkten Folgen daraus sind, dass eine Reihe von Dingen !IE halten würde-Attribute nicht gesetzt werden, mit setAttribute in IE einschließlich Event-Handler-Bindungen und vor allem auch Stil, Klasse und name. offenbar IE8-fixes, aber ich habe noch nicht installiert, also kann ich nicht überprüfen.
Inzwischen, für die Veranstaltung verbindlich verwenden Sie die addEventListener/attachEvent - pair-Mädchen anstelle, oder (weniger bevorzugt, weil es eine direkte Zuweisung) setzen.onclick-direkt zu Ihrem Ziel-Methode (oder eher eine Schließung auf Ihre Methode).
Befestigen Sie Ihr styling nicht korrekt angewandt wurde, verwenden
element.style = foo;
oder (besser)element.className = bar
.Im wesentlichen das problem setAttribute. Vermeiden Sie es.
Für Referenz...
Als annakata sagte, Sie sollten verwenden Sie die Methode addEventListener/attachEvent. Allerdings, wenn Sie wan ' T legen Sie die onclick-direct können Sie verwenden:
Einfach diese
Eigentlich für die cross-browser-Zwecke, es ist besser, Jquery verwenden.
Dadurch wird der tag mit text aaabbb, href = "#", Roter hintergrund und ein Alarm-Ereignis für das klicken.
Wenn Sie sich für eine wiederverwendbare, X-browser-Lösung, die folgende Funktion funktioniert bei IE, FF und Opera: