Jak mogę href
dynamicznie dodać atrybut do łącza za pomocą JavaScript?
Zasadniczo chcę dodać href
atrybut do <a></a>
dynamicznie (tj. Gdy użytkownik kliknie określony obraz w witrynie).
Więc od:
<a>Link</a>
Muszę iść do:
<a href="somelink url">Link</a>
javascript
html
Pavel
źródło
źródło
setAttribute
). Czy ktoś wie, czy to podejście jest standardowe?HTMLLinkElement
które obsługują ustawianie niektórych pól, takich jakhref
. Musisz spojrzeć na odniesienie, aby zobaczyć, którego możesz użyć bez koniecznościsetAttribute
. Innym przykładem jest<table>
element ( HTMLTableElement ), za pomocą którego możnainsertRow()
wstawiać nowe wiersze bez konieczności tworzenia<tr>
i dołączania go do tabeli.setAttribute()
igetAttribute()
, które są zepsute w IE i nie zawsze robią to, czego możesz się spodziewać. Zobacz stackoverflow.com/questions/4456231/…Zakładam, że wiesz, jak uzyskać obiekt DOM dla
<a>
elementu (użyjdocument.getElementById
lub innej metody).Aby dodać dowolny atrybut, po prostu użyj metody setAttribute na obiekcie DOM:
a = document.getElementById(...); a.setAttribute("href", "somelink url");
źródło
setAttribute
jest to oczywiście standard ( w3.org/TR/DOM-Level-2-Core/core.html#ID-F68F082 ) a W3C nie definiuje żadnych atrybutów, dla których nie działa. I odwrotnie, mogę zagwarantować, że użycie właściwości zakończy się niepowodzeniem dla niektórych nazw atrybutów. Takich jaktagName
, isetAttribute
- to już są pola / metody interfejsu Element. Nie widzę nigdzie w dokumencie W3C, który wspomina o właściwościach atrybutów.tagName
. Czy mówisz o atrybutach niestandardowych?getAttribute
isetAttribute
;"tagName"
jest przykładem atrybutu, który nie może działać jako właściwość. Tylko podczas pracy z HTML i dla niektórych atrybutów zdefiniowanych w specyfikacji DOM HTML możesz używać właściwości do odczytywania i przypisywania atrybutów.tagName
jest właściwościąElement
obiektów w JavaScript w HTML i XML DOMS, i nie można dostać nazwę znacznika danego elementu poprzezgetAttribute("tagName")
(z wyjątkiem IE, którego wdrożeniegetAttribute()
isetAttribute()
jest uszkodzona), co wydaje się dokładnie przeciwieństwo tego, co mówisz.Najpierw spróbuj zmienić
<a>Link</a>
na<span id=test><a>Link</a></span>
.Następnie dodaj coś takiego do wywoływanej funkcji javascript:
var abc = 'somelink'; document.getElementById('test').innerHTML = '<a href="' + abc + '">Link</a>';
W ten sposób link będzie wyglądał następująco:
<a href="somelink">Link</a>
źródło
href
do istniejącegoa
znacznika (w zasadzie chcę dynamicznie dodać atrybut href do <a> </a> ). Jednak ta odpowiedź wydaje się być wyjaśniając, jak tworzyć takiea
tag zhref
.document.getElementById('link-id').href = "new-href";
Wiem, że to stary post, ale tutaj jest jeden wiersz, który może być bardziej odpowiedni dla niektórych osób.
źródło