webForumDet fria alternativet

getElementsByTagName hittar ingenting

9 svar · 500 visningar · startad av Skarre

SkarreMedlem sedan apr. 20012 427 inlägg
#1

Koden nedan är tänkt att ersätta target="_blank" på mina sidor och den har fungerat tidigare, men på den sida jag jobbar med för tillfället hittar den helt plötsligt ingenting (a_tags.length blir 0). Det spelar ingen roll vilken tagg jag testar med. Säkerligen ett pinsamt slarvfel, men jag hittar det inte i mitt nuvarande tillstånd.

function externalLinks() {
	if (!document.getElementsByTagName) {
		return;
	}
	var a_tags = document.getElementsByTagName("a");
	for (var i = 0; i < a_tags.length; i++) {
		var a = a_tags[i];
		if (a.getAttribute("href") && a.getAttribute("rel") == "blank") {
			a.target = "blank";
		}
	}
}
window.onload = externalLinks();
jawbreakerMedlem sedan jan. 2003296 inlägg
#2

Är du säker på att den inte hittar länkarna?
Testa med

window.onload = externalLinks;

Alltså utan parenteser på funktionen. Och så bör det väl egentligen stå

a.target = "_blank";

?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#3

Har du kollat med en alert att funktionen körs?
window.onload = externalLinks(); gör att funktionen körs innan sidan
laddas, och window.onload sätt till funktionens returvärde.

window.onload = externalLinks;
Ska det naturligtvis vara!

SkarreMedlem sedan apr. 20012 427 inlägg
#4

Jepp, jag har kollat att funktionen körs. Efter att a_tags har skapats testar jag alert(a_tags.length); och får då "0". :(

Web-TorMedlem sedan nov. 200013 890 inlägg
#5

Första kodsnutten i det här inlägget ska funka.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#6

Rent tekinskt så körs di funktion som det är nu men innan sidan har alddats, alltså finns det inga länkar på sidan då.

Web-TorMedlem sedan nov. 200013 890 inlägg
#7

nitro2k01 skrev:

Rent tekinskt så körs di funktion som det är nu men innan sidan har alddats, alltså finns det inga länkar på sidan då.

Som sagt var: Det funkar om man tar bort parenteserna efter funktionsanropet.

SkarreMedlem sedan apr. 20012 427 inlägg
#8

Nu är jag där igen. Funktionen vägrar köras utan parenteser, och när jag kör den med parenteser hittas istället inga länkar.

function externalLinks() {
	if (!document.getElementsByTagName) {
		return;
	}
	var a_tags = document.getElementsByTagName("a");
	for (var i = 0; i < a_tags.length; i++) {
		var a = a_tags[i];
		if (a.getAttribute("href") && a.getAttribute("rel") == "_blank") {
		a.target = "_blank";
		}
	}
}
window.onload = externalLinks;
Peter SMedlem sedan dec. 20025 483 inlägg
#9

Då föreslår jag att plockar bort ett eventuellt onloadattribut från <body>, alternativt lägger till externalLinks() till nämnd tagg.

:)

SkarreMedlem sedan apr. 20012 427 inlägg
#10

Aha, man kan alltså inte ha ett onload-attribut samtidigt. Det förklarar saken. Tack för det!

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)