TulorkMedlem sedan aug. 2004903 inlägg Vet inte om det är mer lämpligt att göra det med hjälp av Javascript... men jag skulle behöva en sätt att söla ner en loop.
Exempelloop
for($i = 0; $i < 10; $i++) {
echo "***********";
}
Om jag skulle vilja att echo bara körs 1 gång vart 0.5:e sekund. Hur ska jag gå till väga?
SPiNMedlem sedan mars 20007 896 inlägg <?php
echo "Hej";
usleep(500000);
echo "En halv sekund senare";
Tänk dock på att användarna upplever sidan som långsam, hela output:en från PHP brukar buffras i webservern innan något visas för besökaren. Antagligen är JavaScript lösningen du är ute efter.
TulorkMedlem sedan aug. 2004903 inlägg Japp, det är nog javascript jag är ute efter. Men... det är jag ännu sämre på. Någon vänlig själ får mer än gärna flytta den här tråden till javascriptavdelningen.
The_HulkMedlem sedan juni 20031 837 inlägg Hela output:en behöver inte buffras på servern, man kan tvinga ut den med
flush();
Det är dock inte alltid det fungerar men oftast, jag vet inte om det är något man kan ställa in i webbservern eller i php.ini
CompusaMedlem sedan jan. 20023 327 inlägg Flyttad från PHP, enligt trådskaparens begäran.
<body>
<script type="text/javascript">
function IntervalTimer(f, t, i){
var t=t,f=f,i=i,th=this;
if (this===window)
throw new Error('IntervalTimer: Object must be created with new IntervalTimer(myFunc, 1000, 5)');
if ('function' != typeof f)
throw new Error('IntervalTimer: Supplied argument f is not a function.');
var iid=setInterval(function(){
if (--i<1)
th.clearInterval()
var retval = f.call(window, i);
if (retval)
this.clearInterval();
}, t);
this.clearInterval=function(){
window.clearInterval(iid);
}
}
function test(times){
var output = document.getElementById('output');
var textElem = document.createTextNode(times + ' gånger kvar. ');
output.appendChild(textElem);
}
window.onload=function(){
timer = new IntervalTimer(test, 2000, 3);
}
</script>
<div id="output">Output: </div>
</body>
Du kan använda setInterval för att köra en funktion med jämna mellanrum. Ovan har jag bifogat en funktion som dessutom enkelt låter dig funktionen enbart x antal gånger. Funktionen måste anropas med new som visas ovan. I exemplet körs funktionen 3 gånger med 2000 millisekunders mellarum. (Alltså 2 sekunder)
Notera för övrigt att du inte kan använda document.write när sidan är färdigladdad - då måste du lägga till saker på annat sätt, t ex med DOM-metoder som ovan, eller mha innerHTML.
TulorkMedlem sedan aug. 2004903 inlägg Tack för all hjälp :)
Men jag löste det själv
<div id="codeOutput" style="margin-bottom: 10px; color: #666;"></div>
<script type="text/javascript">
function showDelay() {
var somediv = document.getElementById('codeOutput');
somediv.innerHTML = random()+"<br />";
}
function random(){
var randIt = Math.random();
var string = new Array();
randIt = randIt * 10;
randIt = Math.floor(randIt);
string[0] = "#get file -p, if(isset)-777";
string[1] = "#list file->content()";
string[2] = "#query table(accounts) + SQLinjection, put result->file -w";
string[3] = "#save file /var/home/bank$id";
string[4] = "#inject query($sql)";
string[5] = "#transfer this->amount($cents)";
string[6] = "#error 98f1vklALgpg!";
string[7] = "#exec file->dir(var/home/bank$id)";
string[8] = "#sweep this->($tracks)";
string[9] = "#grab this->info(bank$id)";
return string[randIt];
}
var delayTime = 0
var rows = 10
for (i=0; i<rows; i++){
setTimeout("showDelay()", delayTime);
delayTime += 150
}
</script>