webForumDet fria alternativet

Skriv ut referens

JavaScript

8 svar · 515 visningar · startad av Cactuz

Medlem sedan okt. 2001670 inlägg
Frågan#1

Kan man skriva ut nån slags referens så om man ändrar variabeln så ändras texten automatiskt som skrivits ut?

Medlem sedan juni 20004 308 inlägg
#2

Menar du som ett objekt med olika egenskaper?

var garage=new Object();
garage['Kalle']='BMW';
garage['Pelle']='Opel';

var namn='Pelle';

alert(namn+' har en '+garage[namn]);
Medlem sedan okt. 2001670 inlägg
#3

Alltså, först skriver jag ut variabeln på sidan, sen ändrar jag variabeln så vill jag att det som skrivits ut på sidan ändras samtidigt automatiskt.

Medlem sedan juni 20004 308 inlägg
#4

Umm... Typ:

<script type="text/javascript">
var foo="blå";
function dw(str){ document.write(str); }
</script>
...

Idag är himlen <script>dw(foo);</script> och jag känner mig <script>dw(foo);</script>.
Medlem sedan sep. 20021 655 inlägg
#5

Jojoxx skrev:

Umm... Typ:

<script type="text/javascript">
var foo="blå";
function dw(str){ document.write(str); }
</script>
...

Idag är himlen <script>dw(foo);</script> och jag känner mig <script>dw(foo);</script>.

Jag är ganska säker på att Cactuz menar så här:

<div>
<script type="text/javascript">
var text = "Välkommen";
document.write(text);
</script>
</div>

<script type="text/javascript">
text = "Hejsan";
</script>

Först ska "Välkommen" skrivas ut, men eftersom variabeln text ändrar värde ska även "Välkommen" ändras till "Hejsan".

Dock är jag ganska säker på att det inte går att lösa så enkelt, utan man får blanda in idn eller något annat för att identifiera texterna.

Medlem sedan okt. 2001670 inlägg
#6

Nej...

foo = "fint"

Står på sidan:
fint

Sen ändrar man foo = "fult"

Står på sidan:
fult

edit: Som dectgap menar ;)

Medlem sedan juni 20004 308 inlägg
#7

Ja ni menar sååå.... :)

Då funkar som sagt inte document.write() eftersom det bara rakt av skriver ut en bestämt sträng en gång. Så för det första måste det kombineras med DOM. Vi refererar till ett element via dess id (precis som dectgap redan sagt). Men det intressanta är sedan när du ändrar variabeln. Från version 1.5 (tror jag) av javascript finns det med en metod som heter watch till Object-objektet. Detta kollar hela tiden när en egenskap ändrar värde vilket man kan nyttja ungefär såhär;

<script type="text/javascript">
var foo=new Object();
foo['mystr']='';
foo.watch('mystr',
	function (prop,oldvalue,newvalue) {
		document.getElementById('here').innerHTML=newvalue;
		document.getElementById('there').innerHTML=newvalue;
		return newvalue;
	}) 
window.onload=function(){ foo['mystr']='Hejsan'; }

</script> 

<span id="here"></span> och <span id="there"></span>

<a href="#" onclick="foo['mystr']=prompt('Gimme some text',''); return false;">Ny text</a>

Exemplet fungerar bara i Mozilla och webbläsare baserade på denna (alltså inte ex IE).

Skall du göra det IE-kompatibelt får du göra på det gamla sättet;

<script type="text/javascript">
function changeit(str){
	document.getElementById('here').innerHTML=str;
	document.getElementById('there').innerHTML=str;
}
</script>

<span id="here">Hejsan</span> och <span id="there">Hejsan</span>

<a href="#" onclick="changeit(prompt('Gimme some text','')); return false;">Ny text</a>

Men då "bevakar" du som synes inte variabeln.

Medlem sedan okt. 2001670 inlägg
#8

Hrm... Problem:

Error: document.getElementById("windows") has no properties

Medlem sedan juni 20004 308 inlägg
#9

Elementet (vanligvis <div> eller <span>) windows (id="windows") måste finnas och det bör vara ett dokument som validerar relativt ok.

<script type="text/javascript">
window.onload=function(){
	document.getElementById("windows").innerHTML="bla...";
}
</script>
<span id="windows"></span>
256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)