Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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 使用jQuery加载文件,计算类的元素数并设置间隔比率_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 使用jQuery加载文件,计算类的元素数并设置间隔比率

Javascript 使用jQuery加载文件,计算类的元素数并设置间隔比率,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我试图实现的是加载一个文件,计算它的类元素,然后在(2秒*元素数)的持续时间内显示它 现在我可以使用jQuery加载该文件: function load() { $(document).ready(function(){ // load my file $('#content').load('phpScripts/someFile.php'); }); // count items i = $('.displayItem').length; } 然后使用间隔

我试图实现的是加载一个文件,计算它的类元素,然后在(2秒*元素数)的持续时间内显示它

现在我可以使用jQuery加载该文件:

function load() {

  $(document).ready(function(){
    // load my file
    $('#content').load('phpScripts/someFile.php');
  });

  // count items
  i = $('.displayItem').length;
}
然后使用间隔显示项目

setInterval(load, i*2000);
但我不在这个范围内(我想我已经宣布它是全球性的)

然后我尝试使用ajax:

function start() {
    $(document).ready(function(){
        $.ajax({
            url: "phpScripts/infoScreenContent.php", 
            dataType: 'html', 
            success: function(data) {
              $("#content").html(data);

              i = $('.displayItem').length;
              alert(i); 

            }
        });     

    });
    //  return i;  
}

start();
现在I=是我元素的计数,它在函数中起作用,但我需要将它传递给另一个

setInterval(start, i*2000);
但i=0

我试图像在PHP中一样返回这个,但它不起作用


请给我一些提示。

$(document)的第一个参数中传递的代码。ready(…)
函数仅在文档完成加载时执行。因此,在第一个示例中,当您调用
setInterval(load,…)
时,每i*2000 ms说一次:“当文档完成加载时,将
'phpscript/someFile.php'
加载到
$('#content')
”。但是文档只完成一次加载,对吗

这是您的第一个问题-加载更多内容的代码只执行一次

现在使用
setInterval
,一旦启动,它将以相同的间隔永远运行。您不能通过更改
i
的值来调整它。为什么?因为间隔只计算一次,所以当执行行
setInterval(load,i*2000)时。表达式
i*2000
被转换成一个值,然后传递给函数
setInterval

如果要执行某些延迟不断变化的代码,则应改用
setTimeout
。我的意思是:

$(document).ready(function(){

  var elementDisplayTime = 500;
  // All functions defined inside this scope will 'see' this variable.

  function loadNext() {
    // Your code for loading new content here
  }

  function clock() {
    // Load next item
    loadNext();

    // See for how long we have to display it
    var count = $('.displayItem').length;

    // Schedule changeover after delay depending on count
    window.setTimeout(clock, count * elementDisplayTime);
  }

  // Start the clock
  clock();
});
我的亲戚