zufallsrefresh

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Einste1n
Mitglied
Beiträge: 520
Registriert: 09.06.2004 18:54

zufallsrefresh

Beitrag von Einste1n »

moin,
ich kenn mich leider nicht so gut mit JavaScript aus, darum brauche ich Eure Hilfe. Ich habe folgendes Javascript

Code: Alles auswählen

<script language="JavaScript">

var security_id=%max_security_id;

var intv = randInt(300,840);

  if(intv&&!isNaN(intv)){
  var folder=external.m2_plugin_folder(security_id, "Continuous Reload");
  var reload_button=folder+'\rreload_button.gif';
  var close_button=folder+'\close_button.gif';
  var ft='<html>\n';
  ft+='<head><title>\n';
  ft+=external.get_tab(security_id, external.cur_sel).document.title+'\n';
  ft+='</title></head>\n';
  ft+='<frameset rows=\'*,15\' framespacing=0 border=0 frameborder=no>\n';
  ft+='<frame id=\'TargetFrame\' scrolling=auto noresize frameborder=no>\n';
  ft+='<frame id=\'TimerFrame\' scrolling=no noresize frameborder=no>\n';
  ft+='</frameset>\n';
  ft+='</html>';

  with(document){
    write(ft);
    frames['TargetFrame'].location.href=document.location.href;
    var docstr='<html>\n';
    docstr+='<body style=\'background-color: black; color: white; font-family: Verdana, Arial, Helvetica; font-size: 11px; font-weight: normal; margin-top:0px;\'>\n';
    docstr+='<div align=\'center\' valign=\'middle\'><a href=\"javascript:reloadFrame()\" onmouseover=\"window.status=\'Reload the Page\'; return true\"><img align=\'middle\' alt=\'Reload the Page\' src=\''+reload_button+'\' height=\'11\' width=\'43\' border=\'0\'></a>&nbsp;&nbsp;Reloading in <span valign=\'middle\' id=\'caption\'></span>&nbsp;&nbsp;<a href=\"javascript:document.location=parent.frames[\'TargetFrame\'].location.href;\" target=\"_parent\" onmouseover=\"window.status=\'Close Continuous Reload\'; return true\"><img align=\'middle\' alt=\'Close Continuous Reload\' src=\''+close_button+'\' height=\'11\' width=\'11\' border=\'0\'></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>\n';   
    docstr+='</body>\n';
    docstr+='<script>\nvar reloadIntv='+intv+';\nvar secsLeft='+intv+';\nfunction reloadFrame(){secsLeft=reloadIntv+1;parent.frames[\'TargetFrame\'].history.go();}\nfunction countDown(){secsLeft--;showTime();}\nfunction showTime(){\ntemp = secsLeft;\ntemp2 = temp / (60*60);\nhours = Math.floor(temp2);\ntemp = temp - (hours*60*60);\ntemp2 = temp / 60;\nminutes = Math.floor(temp2);\ntemp = temp - (minutes*60);\nseconds = temp;\nif(hours < 10) hours = "0"+hours;\nif(minutes < 10) minutes = "0"+minutes;\nif(seconds < 10) seconds = "0"+seconds;\ndocument.getElementById(\'caption\').innerHTML=hours+\':\'+minutes+\':\'+seconds;\n}\nsetInterval(\'reloadFrame()\','+intv*1000+');\nsetInterval(\'countDown()\',1000);\nshowTime();\n</script/>\n';
    docstr+='</html>';                                    
    frames['TimerFrame'].document.write(docstr);
  }
}
 
</script>
Leider funktioniert dieses randInt(300,840) nicht bei jeder seite ... das ganze soll ein refresh plugin für den Browser Aufsatz Maxthon darstellen.
Er soll eine Seite zwischen 300 und 800 sekunden refreshen und nach jedem refresh wieder eine neue zufallszeit zwischen 300 und 800 Sekunden auslosen.
Es gibt bisher zwei Fehler, der eine ist halt das dieses randInt(300,840) komischerweise nicht immer zu funktionieren scheint, das heißt es passiert dann garnix und das zweite problem ist das er immer nur eine zufallszeit auslost und danach diese dann immer wieder nimmt.
das randInT Problem kann ich evt. mit random lösen aber ich versteh nicht wie man die zahl immer wieder neu aulosen lassen kann :(
wäre nett, wenn mir einer helfen könnte, hab da die ganze nacht schon dran gesessen :(
Einste1n
Mitglied
Beiträge: 520
Registriert: 09.06.2004 18:54

Beitrag von Einste1n »

so problem 1 wie angekündigt, war ganz einfach ... dat mache ich jetzt mit

Code: Alles auswählen

a = 300+540*Math.random();
a = Math.ceil(a);
var intv = a
hab jetzt die Funktion ein bißchen umgeändert, in der hoffnung das er nun immer einen neuen zufallswert nimmt, klappt aber nur zum teil

Code: Alles auswählen

\nfunction reloadFrame(){a = 300+540*Math.random();a = Math.ceil(a);reloadIntv=a;secsLeft=reloadIntv+1;
so ... theoretisch müste er nun für a einen neuen zufallswert zwischen 300 und 840 auslosen und diesen dann setzen als neuen countdown!
Soweit macht er das auch, nur dann setzt er ja noch secsleft und da verstehe ich drunter das das die sekunden sind die er runterzählen soll.

Das tut er aber net ... sagen wir er hatte beim 1 mal die Zahl 300 ausgelost zählt er bis 1 runter und setzt dann eine neue zufallszahl zb. 800
Diese zählt er dann aber nicht bis 1 runter sondern nur bis 500 (-300)

Ich finde den Fehler einfach nicht :(
Antworten

Zurück zu „Coding & Technik“