函数只从$(function(){调用一次

时间:2016-08-03 11:52:08

标签: javascript jquery function web call

所以在我的js脚本中我使用jQuery,在顶部我写道:

$(function() { 
     myFunc(); 
     function myFunc() { 
        console.log("1"); 
     } 
});

"1"只打印一次,这意味着myFunc只运行一次,我希望它每隔一帧/毫秒运行一次,或者基本上尽可能快地反复运行。为什么不这样发生?如果我做错了,我怎样才能达到我想要的效果,我的错误是什么?

9 个答案:

答案 0 :(得分:1)

你可以使用setTimeout()在一段时间假设5秒后执行相同的功能

$(function() { 
     myFunc();  // call initially when dom is ready
     function myFunc() { 
        console.log("1"); 
        setTimeout(function(){ myFunc(); }, 5000) // runs after every 5 seconds
     } 
});

您也可以使用setInterval()

$(function() { 
     function myFunc() { 
        console.log("1"); 
     } 
     setInterval(myFunc,0);
});

答案 1 :(得分:1)

你写了IIFE(立即调用函数表达式),主函数只运行一次。 您需要使用setInterval调用内部函数,间隙为0毫秒。

$(function(){ 
     function myFunc(){ 
        console.log("1"); 
     } 
     setInterval(myFunc,0);
});

答案 2 :(得分:1)

您的匿名函数(外部函数)在加载页面时运行。这会调用myFunc,它会向控制台输出1,然后结束。如果你想循环,你可以尝试在myFunc函数的末尾调用myFunc,但如果你这样做,你会发现你的浏览器会挂起,最终你的内存不足。这是因为调用堆栈会增长和增长,从不允许UI响应,因为javascript完全可以控制!

或者,您可以在方法结束时使用setTimeout(myFunc, delay),在经过一定的毫秒后再次调用它。这不会填充调用堆栈并允许UI响应,但您必须指定间隔。

最后一种方法是在你的外体调用'myFunc()'的地方使用'setInterval(myFunc,delay)'。这会在每个'延迟'毫秒内重复调用你的函数。

答案 3 :(得分:1)

从评论中可以清楚地看出,您迫切需要一个响应式框架。

Bootstrap是最受欢迎的HTML,CSS和JS框架,用于在Web上开发响应式移动优先项目。

它消除了为移动设备和桌面设计/设计单独页面的需要。

只需浏览一组预定义的CSS类,就可以了。

无需为窗口大小调整编写复杂的逻辑以及所有......

希望它有所帮助。

答案 4 :(得分:1)

如果您只需要根据评论检查更改窗口大小,请尝试

$(function () { 
    $(window).resize(function () { 
        //insert code here 
    }); 
});

答案 5 :(得分:1)

  

@Vadim Tatarnikov尽快调用jquery使用的函数   window.setInterval()以最小时间间隔尝试以下代码

<script type="text/javascript" src="jquery.js"></script>//add your jquery script file 

<script type="text/javascript">
$(document).ready(function(){ 
window.setInterval(function(){
 myFunc();
},1);//here i put time interval=1 millisecond
});
function myFunc(){
    console.log("1");
}

这将在每1毫秒运行一次调用myFunc()并查看控制台。

答案 6 :(得分:0)

你可以做:

while(1){
  myFunc();
} 

但首先解释一下你的要求。

答案 7 :(得分:0)

您的代码只运行一次(页面加载时)。如果您想以计算机可以处理的速度运行代码,请使用

while(true) {/Your Code here.../}
var interval = setInterval(1, function() {/Your Code Here/});
每0.001秒运行一次代码,
clearInterval(interval);
停止代码运行。有关详细信息,请参阅this link

答案 8 :(得分:-1)

如果您希望每次将函数放在setInterval中,并且间隔为1ms,则需要运行函数,但这不是推荐的方法。

$(function(){ 
   setInterval(myFunc,1) 
   function myFunc(){ 
     console.log("1"); 
   } 
});

你可以解释你的用例,或者你也可以尝试将你的函数调用包装在循环中。