TravoniMedlem sedan okt. 20041 556 inlägg Jag skulle vilja att denna funkar så att den skriver bara "Ping!" till diven var tredje sekund även fast jag skriver som febrilt i textboxen, skriver jag inget så skall "Ping!" raderas efter några sekunder.
Hur gör jag det?
Nu verkar ju timeout starta på nytt hela tiden.
<script>
var i=0;
function state_change(){
if(i==0){
document.getElementById('puff').innerHTML = '';
setTimeout("i=1;", 3000);
}else{
i=0;
document.getElementById('puff').innerHTML = 'Ping!';
}
};
</script>
<input type="text" onkeyup="state_change()">
<div id="puff"></div>
Jag är inte säker på vad du menar, men detta bör fungera:
<script type="text/javascript">
// Referens till en gjord timeout
var currenttimeout=0;
function state_change(i){
// Om det finns en timeout som väntar...
if (currenttimeout)
// ... så ta bort den!
clearTimeout(currenttimeout);
if(i){
// Kod som ska köras när användaren inte har skrivit på 3 sekunder
document.getElementById('puff').innerHTML = '';
}else{
// Kod som ska köras när användaren skriver i rutan
document.getElementById('puff').innerHTML = 'Upd!';
// Ta bort om 3 sekunder...
currenttimeout=setTimeout("state_change(1);", 3000);
}
};
</script>
<input type="text" onkeyup="state_change(0)" />
<div id="puff"></div>
TravoniMedlem sedan okt. 20041 556 inlägg /r.
Tack,
det ser helt rätt ut nu, men eftersom att en funktion skall köras här:
}else{
//Här
kör_funktion();
Så kommer funktionen köras varje gång man lyfter fingret ifrån tangentbordet.
Jag skulle vilja att den funktionen körs var tredje sekund (Om det skrivs i textboxen vill säga.)
TravoniMedlem sedan okt. 20041 556 inlägg Så här:
<script type="text/javascript">
// Referens till en gjord timeout
var currenttimeout=0;
var f = 0;
function state_change(i){
// Om det finns en timeout som väntar...
if (currenttimeout)
// ... så ta bort den!
clearTimeout(currenttimeout);
if(i){
// Kod som ska köras när användaren inte har skrivit på 3 sekunder
document.getElementById('puff').innerHTML = '';
f = 0;
}else{
if(!f){
// Kod som ska köras när användaren skriver i rutan
document.getElementById('puff').innerHTML = 'Skriver...'; f=1;
}
// Ta bort om 3 sekunder...
currenttimeout=setTimeout("state_change(1);", 3000);
}
};
</script>
<input type="text" onkeyup="state_change(0)" />
<div id="puff"></div>
Det kanske finns ett bättre sätt men detta verkar funka.
Peter SMedlem sedan dec. 20025 483 inlägg Glöm inte att acceptera ditt senaste inlägg som slutgiltigt. :)
TravoniMedlem sedan okt. 20041 556 inlägg Ok, men är de det bästa sättet?
Peter SMedlem sedan dec. 20025 483 inlägg Svårt att säga, men i mina ögon ser det i alla fall bra ut. Du behöver nog inte fundera så mycket mer på detta.
Har lite problem med Settimeout, förstår inte hundra hur det fungerar. Jag har det här i en funktion:
getElemRefs("hand_rate").innerHTML = "Thanks for your vote!";
setTimeout(getElemRefs("hand_rate").innerHTML = message, 2000);
Tanken är att det ska stå "Thanks for your vote" i två sekunder och sen ska "message" skrivas till samma element.
Hur ska jag göra? Det vore även coolt om man kunde få "Thanks for your vote" att blinka under 2-3 sekunder innan den byter text.
Tack!
johaseoMedlem sedan maj 2009250 inlägg <html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<SCRIPT language="javascript">
function init()
{
obj=document.getElementById("hand_rate");
obj.innerHTML = "Thanks for your vote!";
setTimeout ( "delayThisaBit()", 2000 );
}
function delayThisaBit()
{
obj=document.getElementById("hand_rate");
obj.innerHTML = "The Vote is now registered!";
}
</SCRIPT>
<body onload="init()">
<form id="form1" runat="server">
<div id="hand_rate">
</div>
</form>
</body>
</html>
prova det här istället ....
Det ovan funkar, men i mitt fall så _måste_ jag skicka med ett argument, eftersom det är ett dynamiskt meddelade som ska visas efter "thanks for your vote".
Har provat fram och tillbaks, men får det inte att funka.
Förslag?
Löste det genom:
var msg;
Högst upp i koden, sen sätter min funktion ett värde till den variabeln som sen visas.
Case closed, tack för hjälpen.