Próbuję znaleźć sposób, który doda / zaktualizuje atrybut za pomocą JavaScript. Wiem, że mogę to zrobićsetAttribute()
funkcją, ale to nie działa w IE.
javascript
html
cross-browser
deweloper
źródło
źródło
document.getElementById("nav").setAttribute("class", "active");
działa w konsoli Chrome JS, ale na rzeczywistej stronie nie działa… jakieś pomysły? Nawiasem mówiąc, na właściwej stronie umieszczam.js
plik przed końcembody
zakresu.To, co wydaje się łatwe, jest w rzeczywistości trudne, jeśli chcesz być w pełni kompatybilny.
Powiedzmy, że masz do dodania identyfikator „div1”.
Wszystkie one będą działać z wyjątkiem ostatniego w IE 5.5 (który jest starożytną historią w tym momencie, ale nadal jest domyślnym XP bez aktualizacji).Ale są oczywiście nieprzewidziane okoliczności. Nie działa w IE przed 8:
e.attributes['style']
nie będzie błąd, ale nie będzie faktycznie ustawić klasę, to musi być className:e['class']
.Jeśli jednak używasz atrybutów, to zadziała:
e.attributes['class']
Podsumowując, traktuj atrybuty jako dosłowne i zorientowane obiektowo.
Dosłownie chcesz po prostu wypluć x = 'y' i nie myśleć o tym. Do tego służą atrybuty setAttribute, createAttribute (z wyjątkiem wyjątku stylu IE). Ale ponieważ są to naprawdę przedmioty, może się pogubić.
Ponieważ będziesz miał problem z poprawnym utworzeniem elementu DOM zamiast jQuery innerHTML slop, potraktowałbym go tak, jak jeden i trzymałbym się e.className = 'fooClass' i e.id = 'fooID'. To jest preferencja projektowa, ale w tym przypadku próba traktowania jest czymś innym niż obiekt działa przeciwko tobie.
Nigdy nie przyniesie to odwrotnego skutku, tak jak inne metody, po prostu pamiętaj, że klasa to nazwa klasy, a styl jest obiektem, więc jest to style.width, a nie style = "width: 50px". Zapamiętaj również tagName, ale jest to już ustawione przez createElement, więc nie powinieneś się tym martwić.
To trwało dłużej niż chciałem, ale manipulacja CSS w JS to trudna sprawa.
źródło
id
czymś innym, a nie z czymś takim jakdata-toggle
Obowiązkowe rozwiązanie jQuery . Znajduje i ustawia
title
atrybut nafoo
. Zwróć uwagę, że wybiera to pojedynczy element, ponieważ robię to według identyfikatora, ale możesz łatwo ustawić ten sam atrybut w kolekcji, zmieniając selektor.źródło
Co chcesz zrobić z atrybutem? Czy to atrybut HTML, czy coś własnego?
W większości przypadków możesz po prostu potraktować to jako właściwość: chcesz ustawić tytuł dla elementu?
element.title = "foo"
zrobię to.W przypadku własnych niestandardowych atrybutów JS DOM jest naturalnie rozszerzalny (aka expando = true), czego prostym rezultatem jest to, że możesz to zrobić,
element.myCustomFlag = foo
a następnie przeczytać bez problemu.źródło