Web-TorMedlem sedan nov. 200011 794 inlägg
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?
nitro2k01Medlem sedan aug. 20037 630 inlägg
<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-TorMedlem sedan nov. 200011 794 inlägg
Okey, det finns inte något sätt att få till det utan en extra funktion?
Peter SMedlem sedan dec. 20025 484 inlägg
var tmp;
function hide(obj){
tmp = obj;
window.setTimeout("tmp.style.display='none'",500);
}
nitro2k01Medlem sedan aug. 20037 630 inlägg
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.
nitro2k01Medlem sedan aug. 20037 630 inlägg
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.
Peter SMedlem sedan dec. 20025 484 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);
}
nitro2k01Medlem sedan aug. 20037 630 inlägg
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);
}
nitro2k01Medlem sedan aug. 20037 630 inlägg
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>
Peter SMedlem sedan dec. 20025 484 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-TorMedlem sedan nov. 200011 794 inlägg
Det kan vara olika element. Det är elementet som skickas in till funktionen som ska påverkas.
Tack för alla svar! :)