getElementByTagName
oleeeeee
- javascript
hi, ich glaube bei js grundsätzlich etwas missverstanden. ich versuche alle links in meinem dokument zu ändern. das ganze sieht so aus:
<body>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.google.de"> test</a>
<script type="text/javascript">
var AnzahlDerATags = document.getElementsByTagName('a').length;
for (var i = 0; i < AnzahlDerATags; ++i){
document.getElementByTagName("a")[i].href = "http://forum.de.selfhtml.org/";
document.getElementByTagName("a")[i].firstChild.nodeValue = " test erfolgreich";
}
</script>
</body>
die schleife an sich funktioniert. aber ich vermute das getElementByTagName nichts weiter kann als einen array zurückgeben. wie also kann ich die eigenschaft eines elementes verändern?
Mahlzeit,
for (var i = 0; i < AnzahlDerATags; ++i){
document.getElementByTagName("a")[i].href = "http://forum.de.selfhtml.org/";
1. ist es wenig sinnvoll bei jedem Durchlauf der Schleife erneut nach allen <a>-Tags zu suchen ...
document.getElementByTagName("a")[i].firstChild.nodeValue = " test erfolgreich";
... und das auch noch zweimal hintereinander,
2. heißt die Methode http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName() und
3. wieso benutzt Du nicht http://de.selfhtml.org/javascript/objekte/links.htm@title=document.links?
MfG,
EKKi
- wieso benutzt Du nicht http://de.selfhtml.org/javascript/objekte/links.htm@title=document.links?
damit kann man laut der Beschreibung nicht das href-attribut ändern. aber das muss ich
Hallo,
- wieso benutzt Du nicht http://de.selfhtml.org/javascript/objekte/links.htm@title=document.links?
damit kann man laut der Beschreibung nicht das href-attribut ändern. aber das muss ich
Das ist durchaus möglich. Auch wenn das dort nicht explizit genannt wird, unter http://de.selfhtml.org/javascript/objekte/links.htm#location wird indirekt darauf hingewiesen. (Da gibts nur einen Verweis auf location, damit nicht alle Eigenschaften doppelt beschrieben werden.)
document.links[0] liefert dir exakt dasselbe Objekt wie document.getElementsByTagName("a")[i] (Linkanker mal außen vor). Damit kannst du jeweils dasselbe anstellen. Nämlich der href-Eigenschaft einen Wert zuweisen - darauf bist du ja schon gekommen.
Mathias
Mahlzeit,
document.links[0] liefert dir exakt dasselbe Objekt wie document.getElementsByTagName("a")[i] (Linkanker mal außen vor).
Nur wenn "i" eine Variable mit dem numerischen Inhalt 0 ist ...</haarspalt> ;-)
MfG,
EKKi
danke, so funktioniert es:
<body>
<a href="http://www.yahoo.de"> test</a>
<a href="http://www.google.de"> test</a>
<a href="http://www.w3c.org"> test</a>
<a href="http://www.maps.google.de"> test</a>
<a href="http://www.russenschlampen.de"> test</a>
<script type="text/javascript">
var AnzahlDerATags = document.getElementsByTagName('a').length;
for (var i = 0; i < AnzahlDerATags; ++i){
var element = document.getElementsByTagName("a")[i]
element.firstChild.data = "test erfolgreich";
element.href = "http://forum.de.selfhtml.org/";
}
</script>
</body>
@@oleeeeee:
danke, so funktioniert es:
Warum bedankst du dich für Hinweise, die du doch nicht befolgst?
var AnzahlDerATags = document.getElementsByTagName('a').length;
Du meinst nicht Tags, sondern Elemente.
for (var i = 0; i < AnzahlDerATags; ++i){
var element = document.getElementsByTagName("a")[i]
Es ist Unsinn, in jedem Schleifendurchlauf erneut 'document.getElementsByTagName("a")' aufzurufen, also den gesamten Elementbaum durchzugehen.
Einmal reicht:
var links = document.getElementsByTagName("a"); // oder eben über document.links
for (var i = 0; i < links.length; ++i)
{
var element = link[i]; // wozu gentlich?
element.firstChild.data = "test erfolgreich";
element.href = "http://forum.de.selfhtml.org/";
// warum nicht gleich
link[i].firstChild.data = "test erfolgreich";
link[i].href = "http://example.net/"; // [[link:http://tools.ietf.org/html/rfc2606.txt@title=RFC2606]]
}
Live long and prosper,
Gunnar
Mahlzeit,
for (var i = 0; i < links.length; ++i)
{
var element = link[i]; // wozu gentlich?// warum nicht gleich
link[i].firstChild.data = "test erfolgreich";
link[i].href = "http://example.net/"; // [[link:http://tools.ietf.org/html/rfc2606.txt@title=RFC2606]]
}
Vielleicht weil
~~~javascript
links[i].firstChild.data = "test erfolgreich";
links[i].href = "http://example.net/";
besser wäre?</haarspalt> ;-)
MfG,
EKKi