Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么设置超时不起作用&;内部相关问题_Javascript_Html_Settimeout - Fatal编程技术网

Javascript 为什么设置超时不起作用&;内部相关问题

Javascript 为什么设置超时不起作用&;内部相关问题,javascript,html,settimeout,Javascript,Html,Settimeout,我的页面上有这个脚本,setTimeout函数永远不会启动。这只是一个警报,但我正在测试。如果有线索的话,我会在页面上进行元刷新,但是我也给了10秒的延迟,这样页面就不会在触发之前刷新 另外,还有一个相关的问题:如果我以10秒的延迟运行一个javascript(使用setTimeout),并且在该javascript中,我尝试修改一个设计元素,该元素在声明setTimeout时不在页面上,但在启动脚本时将在页面上。行吗 <script language=javascript> va

我的页面上有这个脚本,setTimeout函数永远不会启动。这只是一个警报,但我正在测试。如果有线索的话,我会在页面上进行元刷新,但是我也给了10秒的延迟,这样页面就不会在触发之前刷新

另外,还有一个相关的问题:如果我以10秒的延迟运行一个javascript(使用setTimeout),并且在该javascript中,我尝试修改一个设计元素,该元素在声明setTimeout时不在页面上,但在启动脚本时将在页面上。行吗

<script language=javascript>

var xmlhttp_get_memento;    
function loop_alerte(){
    setTimeout( function() {
        alert("timeout");
    }, 5000);
    xmlhttp_get_memento = new XMLHttpRequest();
    if (xmlhttp_get_memento==null)
    {
        alert ("Browser does not support HTTP Request (1)");
        return;
    }   
    var url="crm/ajax/get_mementos.php";
    url=url+"?sid="+Math.random();
    xmlhttp_get_memento.onreadystatechange=function() {
        if (xmlhttp_get_memento.readyState == 4) {  
            alert(xmlhttp_get_memento.responseText);                                        
            schimbare_tip_cursor("default");
        }
        else{
            schimbare_tip_cursor("progress");
        }
    };

xmlhttp_get_memento.open("GET",url,true);
xmlhttp_get_memento.send(null);
}

loop_alerte();
</script>';

var xmlhttp_get_memento;
函数loop_alerte(){
setTimeout(函数(){
警报(“超时”);
}, 5000);
xmlhttp_get_memento=new XMLHttpRequest();
if(xmlhttp_get_memento==null)
{
警报(“浏览器不支持HTTP请求(1)”;
返回;
}   
var url=“crm/ajax/get_mementos.php”;
url=url+“?sid=“+Math.random();
xmlhttp_get_memento.onreadystatechange=function(){
如果(xmlhttp_get_memento.readyState==4){
警报(xmlhttp_get_memento.responseText);
schimbare_tip_光标(“默认”);
}
否则{
辛巴雷提示光标(“进度”);
}
};
xmlhttp_get_memento.open(“get”,url,true);
xmlhttp_get_memento.send(null);
}
loop_alerte();
';

设置超时没有问题,您需要进一步调试

至于你的第二个问题——函数将运行,但无论你试图做什么都不会起作用。

你的
设置超时看起来不错,所以可能还有其他问题。您是否尝试过使用javascript调试器来查看是否出现任何错误


至于你的第二个问题,是的,这应该不会有任何问题,因为setTimout中的匿名函数在运行之前不会被计算。这里的实时示例:使用和不使用jQuery。

清理代码将是一个很好的开始。我可以想象一个浏览器不理解标签
。我建议使用
,如果幸运的话,您的javascript可能会工作

你应该把这个问题分成几个单独的问题。最好选择一个不正确的答案,函数会运行良好,他尝试做的任何事情都会起作用,即使在达到setTimeout时元素不存在,因为函数直到稍后才会计算。看看我的答案和代码示例。我的网站是由ajax加载的元素组合而成,我试图做的是在加载节之前启动超时,并在加载后运行实际函数来修改其中的元素。好吧,javascript确实有效,只是有一些东西阻止setTimeout中的警报显示。不过还是谢谢你的评论。我已经让它发挥作用了。问题是警报没有被设置为匿名函数的返回,我在重新加载页面的javascript之后进行了元刷新,阻止了警报的显示。另外,感谢您提供的示例,帮助我更好地理解setTimeout