Kan man skriva ut nån slags referens så om man ändrar variabeln så ändras texten automatiskt som skrivits ut?
Skriv ut referens
8 svar · 513 visningar · startad av Cactuz
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]);
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.
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>.
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.
Nej...
foo = "fint"
Står på sidan:
fint
Sen ändrar man foo = "fult"
Står på sidan:
fult
edit: Som dectgap menar ;)
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.