Php 运行多功能javascript

Php 运行多功能javascript,php,javascript,function,Php,Javascript,Function,我现在有一个由MySQL表填充的表,我想从这些单元格中获取数据,并使用它们创建一个模拟的实时更新,但是,由于javascript函数中有多行用于循环,我认为这会导致其他函数无法运行,我无法找到解决方法 Javascript代码: var seconds = 5; var divid = "status"; var url = "boo.php"; var timeout; function refreshdiv(){ // The XMLHttpRequest object var xml

我现在有一个由MySQL表填充的表,我想从这些单元格中获取数据,并使用它们创建一个模拟的实时更新,但是,由于javascript函数中有多行用于循环,我认为这会导致其他函数无法运行,我无法找到解决方法

Javascript代码:

var seconds = 5;
var divid = "status";
var url = "boo.php";
var timeout;

function refreshdiv(){

// The XMLHttpRequest object

var xmlHttp;
try{
xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
alert("Your browser does not support AJAX.");
return false;
}
}
}

// Timestamp for preventing IE caching the GET request

fetch_unix_timestamp = function()
{
return parseInt(new Date().getTime().toString().substring(0, 10))
}

var timestamp = fetch_unix_timestamp();
var nocacheurl = url+"?t="+timestamp;

// The code...

xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById(divid).innerHTML=xmlHttp.responseText;
setTimeout('refreshdiv()',seconds*1000);
}
}
xmlHttp.open("GET",nocacheurl,true);
xmlHttp.send(null);
}

// Start the refreshing process

var seconds;
window.onload = function startrefresh(){
setTimeout('refreshdiv()',seconds*1000);
}

function runningtime(int) {
if(int == 0) { //if there is data
console.log("int=0 so no data is present, int: " + int);

} else if(int == 1){
var isRunning = new Array();
isRunning[0] = " ";
for (var i=0; i < 3; i++) {
var bool = 'running' + i;
console.log("Running = " + bool);
running = document.getElementById(bool).innerHTML.substring(10,11);

console.log("running: " + running);

if(isRunning[i] == "1") {

var time = 'Time' + i;

a= document.getElementById(time).innerHTML;
console.log("a= " + a);

  hour=a.substring(0,2);
  min= a.substring(3,5);
  sec= a.substring(6,8);

  sec==sec++;

if (min<=9) { min="0"+min; }
if (sec<=9) { sec="0"+sec; }

time = (hour + ":" + min + ":" + sec + " ");

if (document.getElementById) { document.getElementById(time).innerHTML = time; }
else if (document.layers) {
 document.layers.theTime.document.write(time);
 document.layers.theTime.document.close(); }

} else {
//Do nothing
return;
}
}
timeout = setTimeout("runningtime(1)", 1000);
}
}

function experiencehour(exp) {
if(exp == 0) { //if there is dexphourtexphour
console.log("exp=0 so no data is present, exp: " + exp);

} else if(exp == 1){

var isRunning = new Array();
isRunning[0] = " ";
for (var i=0; i < 3; i++) {
var bool = 'running' + i;
console.log("Running = " + bool);
running = document.getElementById(bool).innerHTML.substring(10,11); //checks if bot running

console.log("running: " + running);

if(isRunning[i] == "1") {

var exph = 'Exph' + i;
var expg = 'Exp' + i;

exphour = document.getElementById(exph).innerHTML; //exphour
currexp = document.getElementById(exp).innerHTML; //current gained exp
exphour =parseInt(exphour);
currexp =parseInt(currexp);

console.log("currexp= " + currexp);
console.log("exphour= " + exphour);

expmin = exphour/60;
console.log("expmin= " + expmin);
expsec = Math.round(expmin/60);
console.log("expsec= " + expsec);

newtotalexp = currexp + expsec;
console.log("newtotalexp= " + newtotalexp);

if (document.getElementById) { document.getElementById(exp).innerHTML = newtotalexp; } //writing new exp
else if (document.lexphouryers) {
 document.lexphouryers.theTime.document.write(time);
 document.lexphouryers.theTime.document.close(); }

} else {
//Do nothing
return;
}
}
timeout = setTimeout("experiencehour(1)", 1000);
}
}

function variable1hour(var1) {
if(var1 == 0) { //if there is dvar1hourtvar1hour
console.log("var1=0 so no data is present, var1: " + var1);

} else if(var1 == 1){

var isRunning = new Array();
isRunning[0] = " ";
for (var i=0; i < 3; i++) {
var bool = 'running' + i;
console.log("Running = " + bool);
isRunning[i] = document.getElementById(bool).innerHTML.substring(10,11); //checks if bot running
console.log("isRunning = " + isRunning[i]);



if(isRunning[i] == "1") {

var varh = 'Varh' + i;
var varg = 'Var' + i;

console.log("Varh = " + varh);
console.log("Var = " + varg);

var1hour = document.getElementById(varh).innerHTML; //var1hour
currvar1 = document.getElementById(varg).innerHTML; //current gained var1
var1hour =parseInt(var1hour);
currvar1 =parseInt(currvar1);

console.log("currvar1= " + currvar1);
console.log("var1hour= " + var1hour);

var1min = var1hour/60;
console.log("var1min= " + var1min);
var1sec = Math.round(var1min/60);
console.log("var1sec= " + var1sec);

newtotalvar = currvar1 + var1sec;
console.log("newtotalvar= " + newtotalvar);

if (document.getElementById) { document.getElementById(varg).innerHTML = newtotalvar; } //writing new var1
else if (document.lvar1houryers) {
 document.lvar1houryers.theTime.document.write(time);
 document.lvar1houryers.theTime.document.close(); 
 }

} else {
//Do nothing
return;
}
}
 timeout = setTimeout("variable1hour(1)", 1000);
}
}

function stopScript() {
console.log("Stopping script");
clearTimeout(timeout);
}

function startScript(i) {
variable1hour(i);
experiencehour(i);
runningtime(i);
}
var秒=5;
var divid=“状态”;
var url=“boo.php”;
var超时;
函数refreshdiv(){
//XMLHttpRequest对象
var-xmlHttp;
试一试{
xmlHttp=newXMLHttpRequest();//Firefox、Opera 8.0+、Safari
}
捕获(e){
试一试{
xmlHttp=newActiveXObject(“Msxml2.xmlHttp”);//Internet Explorer
}
捕获(e){
试一试{
xmlHttp=新的ActiveXObject(“Microsoft.xmlHttp”);
}
捕获(e){
警报(“您的浏览器不支持AJAX。”);
返回false;
}
}
}
//防止IE缓存GET请求的时间戳
fetch_unix_timestamp=函数()
{
返回parseInt(新日期().getTime().toString().substring(0,10))
}
var timestamp=fetch_unix_timestamp();
var nocacheurl=url+“?t=“+时间戳;
//代码。。。
xmlHttp.onreadystatechange=函数(){
if(xmlHttp.readyState==4){
document.getElementById(divid).innerHTML=xmlHttp.responseText;
setTimeout('refreshdiv()',秒*1000);
}
}
open(“GET”,nocacheurl,true);
xmlHttp.send(空);
}
//启动刷新过程
var秒;
window.onload=函数startrefresh(){
setTimeout('refreshdiv()',秒*1000);
}
函数运行时(int){
如果(int==0){//如果有数据
log(“int=0所以不存在数据,int:+int”);
}else if(int==1){
var isRunning=新数组();
正在运行[0]=“”;
对于(变量i=0;i<3;i++){
var bool=‘运行’+i;
console.log(“Running=“+bool”);
running=document.getElementById(bool.innerHTML.substring(10,11);
console.log(“running:+running”);
如果(正在运行[i]=“1”){
变量时间=‘时间’+i;
a=document.getElementById(time).innerHTML;
console.log(“a=“+a”);
小时=a.子串(0,2);
min=a.子串(3,5);
sec=a.子串(6,8);
秒==秒++;

如果(min你不能在JS中同时使用,但是你可以在JS中模拟一下

看看下划线的
defer
方法

它的工作原理如下:

  • 取循环体并将其封装在函数中
  • 在for循环的每次迭代中,使用defer调用函数
基本上就是这样。这样做将允许其他函数“中断”任何给定的进程(函数),从而“共享”执行线程

一个标准的JS实现,带有out defer。我试图模拟defer的closer。这里的关键是,尽管调用仍然按照队列的顺序执行,但所有调用都“开始”在任何一个循环完成之前。在AJAX异步请求的情况下,异步响应应该能够在任意两个循环迭代之间注入自身。您还可以使用轻微延迟设置数据处理


一个小提示:你越是“推迟”并将循环体拼接成单元,共享性越高。每个函数都会执行,直到完成后再让另一个函数执行。因此,尽可能多地进行切分,以获得所需的执行共享类型。因此,理想情况下,我希望在for循环的每次迭代后延迟,这样它几乎会更新一个ro然后一次向下移动w?是的。类似于:
for(vari=0;i!=3;++i){uu.defer(fn,i);}
其中
fn
是带有主体的函数,执行它所需的唯一参数是
i
。让您的代码快速浏览一下,这似乎就是您所需要的。试试看!我用标准JS实现编辑了代码以进行比较。模拟“中断”这很棘手,但我想向您展示它是如何排队的,而不是等到整个for循环(模拟函数)完成后再继续下一个循环。我希望这会有所帮助。在过去的一个小时里,我一直在尝试让它工作,但仍然没有运气,在控制台中得到“uncaughtreferenceerror:u未定义”,代码为:for(var r=0;r!=3;++r){{uu.defer(variable1hour(i),r);}是否包含下划线库?{uu.defer不是标准的。如果它没有显示并且已经包含,请确保在执行此脚本之前包含它,并确保引用没有404'ing或其他错误。
for(var i = 0; i != 5; ++i)
{
    (function(index)
     {
         document.getElementById('id' + index).innerHTML = 'started...';

         setTimeout(function()
         {
             // kill some time
             var str = '';
             for(var j = 0; j != 10000000; ++j)
                 str = str + ' ';

             document.getElementById('id' + index).innerHTML = 'Function: 1.  Index: ' + index + ' - ' + new Date().getTime();
         }, index);
     })(i);
}

for(var i = 5; i != 10; ++i)
{
    (function(index)
     {
         document.getElementById('id' + index).innerHTML = 'started...';

         setTimeout(function()
         {
             // kill some time
             var str = '';
             for(var j = 0; j != 1000000; ++j)
                 str = str + ' ';

             document.getElementById('id' + index).innerHTML = 'Function: 2.  Index: ' + index+ ' - ' + new Date().getTime();
         }, 1);
     })(i);
}