Link über ID ansprechen funktioniert nicht (Internet Explorer)
sunny
- javascript
Hallo zusammen!
Stehe gerade vor einem für mich etwas komischen Problem:
Ich versuche einen Link nachträglich per JavaScript zu verändern.
(Bei der Website wo dies eingesetzt wird handelt es sich um ein intern eingesetztes System auf welches nur per Firefox und IE 6.0 und aktiviertem JavaScript zugegriffen wird, zudem handelt es sich dabei nur um ein kleines Zusatzfeature und keine zwingend notwendige Funktionalität).
Im Firefox stellt dies auch kein Problem dar, allerdings schaffe ich es nicht, den Link auch im Internet Explorer korrekt anzusprechen.
Habe dazu mal einen ganz simplen Code-Schnippsel gemacht:
<a href="http://www.google.at" id="MyLink">Google</a>
<script type="text/javascript">
alert(document.links['MyLink']);
</script>
Der IE 6 liefert mir hier nur ein "undefined". Was mache ich falsch?
Habe auch versucht dem Link ein name-Attribut zuzuweisen, aber auch das verändert nichts. Konkret möchte ich dann das href-Attribut ansprechen (funktioniert im FF auch), allerdings hat der IE ja anscheinend schon hier ein Problem. Bzw. ich, weil ich nicht weiß, wie ich das richtig lösen kann.
Einfach per document.links[0] ansprechen würde zwar in dem Beispiel hier klappen, allerdings besteht das "richtige" Dokument aus sehr vielen Links und da sich dieses auch immer wieder einmal verändern kann, wäre es sinnvoller, den Link über seine ID anzusprechen.
Liebe Grüße,
sunny
Hi,
Im Firefox stellt dies auch kein Problem dar, allerdings schaffe ich es nicht, den Link auch im Internet Explorer korrekt anzusprechen.
verwende DOM.
Cheatah
verwende DOM.
Macht sunny doch - document.links ist DOM.
Hi,
Macht sunny doch - document.links ist DOM.
laut Spezifikation oder laut Implementierung im genannten Browser?
Cheatah
hi,
document.links ist DOM.
laut Spezifikation oder laut Implementierung im genannten Browser?
Angesichts Document Object Model (HTML) Level 1 -> 2.4. Objects related to HTML documents -> Interface HTMLDocument erschließt sich mir der Grund deiner Frage irgendwie nicht.
"links
A collection of all AREA elements and anchor (A) elements in a document with a value for the href attribute."
gruß,
wahsaga
Hi,
document.links ist DOM.
laut Spezifikation oder laut Implementierung im genannten Browser?
Angesichts Document Object Model (HTML) Level 1 -> 2.4. Objects related to HTML documents -> Interface HTMLDocument erschließt sich mir der Grund deiner Frage irgendwie nicht.
ich wollte damit darauf hinweisen, dass ein _praktisches_ Problem, welches trotz standardkonform Implementierung vorliegt, selten etwas mit der _theoretischen_ Spezifikation zu tun hat. Nur weil das W3C _sagt_, dass document.links Teil von DOM ist, muss Microsoft das noch lange nicht so umgesetzt haben.
Cheatah
Hallo,
Angesichts Document Object Model (HTML) Level 1 -> 2.4. Objects related to HTML documents -> Interface HTMLDocument erschließt sich mir der Grund deiner Frage irgendwie nicht.
ich wollte damit darauf hinweisen, dass ein _praktisches_ Problem, welches trotz standardkonform Implementierung vorliegt, selten etwas mit der _theoretischen_ Spezifikation zu tun hat. Nur weil das W3C _sagt_, dass document.links Teil von DOM ist, muss Microsoft das noch lange nicht so umgesetzt haben.
Das, was im W3C-DOM spezifiziert ist, also eine HTMLCollection document.links mit den Methoden item() und namedItem(), ist im IE umgesetzt. Der IE ist, wenn man so will, hier sogar am standardkonformsten ;-). Denn DOM Level 0, also in diesem Fall Netscape Client Side JavaScript, zu welchem das W3C-DOM abwärtskompatibel ist, definiert document.links wirklich nur als Array. Im Gegensatz dazu ist document.forms zwar auch als Array bezeichnet, die Beschreibung zeigt aber auch explizit, dass man es als Object ansprechen kann.
viele Grüße
Axel
hi,
ich wollte damit darauf hinweisen, dass ein _praktisches_ Problem, welches trotz standardkonform Implementierung vorliegt, selten etwas mit der _theoretischen_ Spezifikation zu tun hat.
Ja, wenn ich
laut Spezifikation oder laut Implementierung im genannten Browser?
noch mal langsam lese, gelingt mir diese Lesart jetzt auch :-)
gruß,
wahsaga
hi,
<a href="http://www.google.at" id="MyLink">Google</a>
<script type="text/javascript">
alert(document.links['MyLink']);
</script>
>
> Der IE 6 liefert mir hier nur ein "undefined". Was mache ich falsch?
Eigentlich nichts. Die ID \_sollte\_ den Link in der links-Collection ansprechbar machen.
Nutze doch getElementByID() stattdessen.
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }
Hallo,
<a href="http://www.google.at" id="MyLink">Google</a>
<script type="text/javascript">
alert(document.links['MyLink']);
</script>
> >
> > Der IE 6 liefert mir hier nur ein "undefined". Was mache ich falsch?
> Eigentlich nichts. Die ID \_sollte\_ den Link in der links-Collection ansprechbar machen.
Ja. Der IE setzt hier offenbar nur die vollständige DOM-Syntax um:
document.[links](http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-7068919).[namedItem](http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-21069976)('MyLink')
funktioniert zumindest im IE6 unter Windows.
viele Grüße
Axel
Hi
var href = document.getElementByID('MyLink').getAttribute("href");
// bzw.
document.getElementByID('MyLink').setAttribute("href") = href;
Wenns nur IE ab v6.0 kanns du's hiermit machen, das interpretiert sogar der.
mfg
Genie
Hallo Genie,
document.getElementByID('MyLink').setAttribute("href") = href;
Es sollte getElementById() heissen
Gruß,
Dieter
Hi
Es sollte getElementById() heissen
sry, mein Fehler
mfg
Genie
Vielen Dank für Eure Antworten!
Aber, es funktioniert weder per document.getElementByID, noch klappen die von Euch vorgeschlagenen Lösungen. Ist mein IE kaputt? JS-Fehler wird allerdings auch keiner angezeigt. Also irgendwas scheint hier komplett schief zu laufen ... Versteh ich nicht.
Verwirrte Grüße
sunny
document.getElementByID
Äh, ja, das hab ich auch grad falsch geschrieben ;-)
Aber das wars nicht ...
Hi,
Aber, es funktioniert weder per document.getElementByID,
mit kleinem "d" am Schluss? Dann machst Du vermutlich noch etwas anderes falsch. Poste doch bitte mal einen Link zur (validierten) Seite.
Cheatah
Hallo,
Aber, es funktioniert weder per document.getElementByID,
mit kleinem "d" am Schluss? Dann machst Du vermutlich noch etwas anderes falsch. Poste doch bitte mal einen Link zur (validierten) Seite.
Ja - mit kleinem d.
Aber wenn ich das href gleich noch mitnehm, dann funktoiniert es plötzlich ...
Ein Link zu meiner Seite ist wohl nicht notwendig, ist doch im Moment nur so ein kleiner Test-Schnippsel:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
</head>
<body>
<p><a href="http://www.google.at" id="MyLink">Google</a></p>
<script type="text/javascript">
document.getElementById('MyLink').href = 'http://www.test.at';
</script>
</body>
</html>
Liebe Grüße
sunny