Ich versuche einen Weg zu finden, wie Attribute mithilfe von JavaScript hinzugefügt / aktualisiert werden können. Ich weiß, dass ich es mit setAttribute()
Funktion machen kann, aber das funktioniert im IE nicht.
Ich versuche einen Weg zu finden, wie Attribute mithilfe von JavaScript hinzugefügt / aktualisiert werden können. Ich weiß, dass ich es mit setAttribute()
Funktion machen kann, aber das funktioniert im IE nicht.
Antworten:
Sie können hier über das Verhalten von Attributen in vielen verschiedenen Browsern, einschließlich IE, lesen .
element.setAttribute()
sollte den Trick machen, auch im IE. Hast Du es versucht? Wenn es nicht funktioniert,
element.attributeName = 'value'
funktioniert es möglicherweise.
document.getElementById("nav").setAttribute("class", "active");
Es funktioniert in der Chrome JS-Konsole, aber auf der eigentlichen Seite funktioniert es nicht. Irgendwelche Ideen? Übrigens füge ich auf der eigentlichen Seite die .js
Datei vor dem Ende des body
Bereichs ein.
Was einfach erscheint, ist tatsächlich schwierig, wenn Sie vollständig kompatibel sein möchten.
var e = document.createElement('div');
Angenommen, Sie müssen die ID 'div1' hinzufügen.
e['id'] = 'div1';
e.id = 'div1';
e.attributes['id'] = 'div1';
e.createAttribute('id','div1')
Diese funktionieren alle mit Ausnahme des letzten in IE 5.5 (das zu diesem Zeitpunkt eine alte Geschichte ist, aber immer noch die Standardeinstellung von XP ohne Updates ist).
Aber es gibt natürlich Eventualitäten. Funktioniert nicht im IE vor 8: e.attributes['style']
Wird nicht fehlerhaft sein, setzt aber die Klasse nicht tatsächlich, es muss className sein : e['class']
.
Wenn Sie jedoch Attribute verwenden, funktioniert dies:e.attributes['class']
Stellen Sie sich Attribute zusammenfassend als wörtlich und objektorientiert vor.
Im wahrsten Sinne des Wortes möchten Sie nur, dass es x = 'y' ausspuckt und nicht darüber nachdenkt. Dafür sind die Attribute setAttribute und createAttribute vorgesehen (mit Ausnahme der Stilausnahme des IE). Aber weil dies wirklich Objekte sind, können die Dinge verwirrt werden.
Da Sie sich die Mühe machen, ein DOM-Element anstelle des jQuery innerHTML-Slops ordnungsgemäß zu erstellen, würde ich es wie eines behandeln und bei e.className = 'fooClass' und e.id = 'fooID' bleiben. Dies ist eine Designpräferenz, aber in diesem Fall ist der Versuch, etwas anderes als ein Objekt zu behandeln, gegen Sie.
Es wird niemals wie bei den anderen Methoden nach hinten losgehen. Beachten Sie nur, dass class className und style ein Objekt ist, also style.width not style = "width: 50px". Denken Sie auch an tagName, aber dies wird bereits von createElement festgelegt, sodass Sie sich darüber keine Gedanken machen müssen.
Dies war länger als ich wollte, aber die CSS-Manipulation in JS ist eine heikle Angelegenheit.
id
, nicht mit etwas anderem wiedata-toggle
Obligatorische jQuery-Lösung . Findet das title
Attribut und setzt es auf foo
. Beachten Sie, dass dies ein einzelnes Element auswählt, da ich es anhand der ID ausführe. Sie können jedoch problemlos dasselbe Attribut für eine Sammlung festlegen, indem Sie den Selektor ändern.
$('#element').attr( 'title', 'foo' );
Was möchten Sie mit dem Attribut tun? Ist es ein HTML-Attribut oder etwas Eigenes?
Meistens können Sie es einfach als Eigenschaft adressieren: Möchten Sie einen Titel für ein Element festlegen? element.title = "foo"
werde es tun.
Für Ihre eigenen benutzerdefinierten JS-Attribute ist das DOM natürlich erweiterbar (auch bekannt als expando = true). Das einfache Ergebnis ist, dass Sie element.myCustomFlag = foo
es ohne Probleme ausführen und anschließend lesen können.