webForumDet fria alternativet

Hitta en textsträng på ett speciellt ställe i koden och byta ut den

JavaScript

8 svar · 490 visningar · startad av web00132

Medlem sedan maj 2001797 inlägg
Frågan#1

Jag använder följande kod (har strippat bort oväsentligheter):

<form id="registerform">
   <p>
      <label>
         Username<br />
         <input type="text" id="user_login" />
      </label>
   </p>
</form>

Nu skulle jag, mha JavaScript, vilja hitta ordet 'Username' och byta ut det mot 'Full name'. Hur ska jag för det första gå tillväga för att hitta ordet i just den HTML-taggen, och för det andra byta ut det ordet?

Observera, jag har inte möjlighet att ändra direkt i HTML-koden alltså. Tackar på förhand!

Medlem sedan maj 2001797 inlägg
#2

Uppdatering: Jag lyckas gömma texten genom att använda lite CSS...

#registerform p:first-child label {
	visibility: hidden !important;
}
#registerform p:first-child label input {
	visibility: visible !important;
}

Men hur får jag dit en annan text?

Medlem sedan aug. 20039 340 inlägg
#3

Tanke: Öka på margin-top och lägg en bakgrundsbild innehållande texten, med no-repeat.

Medlem sedan maj 2001797 inlägg
#4

Ingen dum tanke nitro2k01, men om jag hellre skulle göra det med javascript, hur skulle man i såna fall göra?

Medlem sedan aug. 20039 340 inlägg
#5

Så här:

window.onload=function(){
	var container = document.getElementById('user_login').parentNode;
	var textel = container.firstChild;
	container.replaceChild(document.createTextNode('Full Name'), textel);
}

Med reservation för att koden inte funkar i IE.

Men säg mig, varför kan du inte komma åt att redigera HTML-koden?

Medlem sedan mars 20007 896 inlägg
#6

Quick 'n dirty find & replace:

function findAndReplace(element, needle, substitution) {
   var h = element.innerHTML;
   h = h.replace(new RegExp(needle, "ig"), substitution);
   element.innerHTML = h;
}

Användning:

var elems  = document.getElementsByTagName("label");
var needle = "Username";
var subst  = "Full name";
findAndReplace(elems[0], needle, subst);
Medlem sedan maj 2001797 inlägg
#7

Nitro! Din kod funkar prima! Även i IE8 verkar det som, har inte möjlighet att testa tidigare versioner.
Anledningen är att jag försöker ändra en Wordpress-inloggningssida, och jag vill inte in i WP-"kärnan" och pilla för då blir det meckigt att uppgradera till kommande versioner sen.

SPiN: Får inte din kod att funka, men det ser ju riktigt snajdig ut och kanske är bättre kompatibilitetsmässigt?

Stort tack för era svar i alla fall! :bire

Medlem sedan maj 2001797 inlägg
#8

Aj då! Javascriptet inkluderas för flera formulär och ibland ska det stå 'Username' och ibland inte. Går det att på något sätt kolla om formuläret som den där label-taggen ligger inom har id='registerform'?

Typ:

window.onload=function(){
	var container = document.getElementById('user_login').parentNode;
	[B]var parentForm = container.parentNode.Id[/B]
	var textel = container.firstChild;
	[B]if (parentForm == 'registerform') {[/B]
		container.replaceChild(document.createTextNode('Full Name'), textel);
	[B]}[/B]
}

Den koden funkar alltså inte, men går det att fixa nåt liknande?

Medlem sedan mars 20007 896 inlägg
#9
var parentForm = container.parentNode.getAttribute('id');
...
263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)