Web-Tor Medlem sedan nov. 2000 13 890 inlägg Trådstart 21 sep. 2005 14:42 #1 Jag gissar att jag har fnuttarna på fel sätt eftersom det här inte funkar ('obj' is undefined):
<html>
<head>
<script type="text/javascript">
function hide(obj){
//obj.style.display='none'
window.setTimeout("obj.style.display='none'",500);
}
</script>
</head>
<body>
<form>
<input type="button" value="Hide text" onclick="hide(bar)">
<div id="bar">Text</div>
</form>
</body>
</html>
Så frågan är; hur sjutton ska man skriva i setTimeout?
<html>
<head>
<script type="text/javascript">
function hide (obj){
var obj = obj;
this.hide = function(){
obj.style.display='none';
}
window.setTimeout(this.hide,500);
}
</script>
</head>
<body>
<form>
<input type="button" value="Hide text" onclick="hide(bar)">
<div id="bar">Text</div>
</form>
</body>
</html>
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Okey, det finns inte något sätt att få till det utan en extra funktion?
P Peter S Medlem sedan dec. 2002 5 483 inlägg var tmp;
function hide(obj){
tmp = obj;
window.setTimeout("tmp.style.display='none'",500);
}
Peter S skrev:
var tmp;
function hide(obj){
tmp = obj;
window.setTimeout("tmp.style.display='none'",500);
}
Jag skulle dock avråda från att använda globala variabler, eftersom om denna funktion körs två gånger med olika div'ar, så kommer den första referensen skrivas över.
Web-Tor skrev:
Okey, det finns inte något sätt att få till det utan en extra funktion?
Vad har du mot detta? Funktionen fungerar ju på samma sätt utifrån.
P Peter S Medlem sedan dec. 2002 5 483 inlägg
nitro2k01 skrev:
Jag skulle dock avråda från att använda globala variabler, eftersom om denna funktion körs två gånger med olika div'ar, så kommer den första referensen skrivas över.
Eftersom Tors exempel endast innefattade ett element, utgick jag från att det endast gällde den <div>en.
En annan variant:
function hide(obj){
window.setTimeout(function(){obj.style.display='none'}, 500);
}
Peter S skrev:
Eftersom Tors exempel endast innefattade ett element, utgick jag från att det endast gällde den <div>en.
En annan variant:
function hide(obj){
window.setTimeout(function(){obj.style.display='none'}, 500);
}
Om det verkligen bara gällde ett element, varför inte förenkla ytterligare?
function hide(){
window.setTimeout("bar.style.display='none'",500);
}
Om det nu gäller en div, så funkar detta: (Förutsatt att div'en har id)
<html>
<head>
<script type="text/javascript">
function hide(objId){
window.setTimeout("document.getElementById(\"" + objId + "\").style.display='none'",500);
}
</script>
</head>
<body>
<form>
<input type="button" value="Hide text" onclick="hide('bar');">
<div id="bar">Text</div>
</form>
</body>
</html>
P Peter S Medlem sedan dec. 2002 5 483 inlägg
nitro2k01 skrev:
Om det verkligen bara gällde ett element, varför inte förenkla ytterligare?
function hide(){
window.setTimeout("bar.style.display='none'",500);
}
Det är helt klart att föredra
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Det kan vara olika element. Det är elementet som skickas in till funktionen som ska påverkas.
Tack för alla svar!