我已经写了一点jquery,我不确定为什么它不工作


I have written a bit of jquery and am unsure as to why it is not working

我一直在为我的合作伙伴写一个网站,我试图使用jquery创建一个图像轮带来改变背景样式属性,但它还没有工作到目前为止,我得到的是我在css中设置的库存图像作为占位符,请快速查看,看看我在哪里走错了

我运行了一些php程序来计算文件夹中的照片数量

    <?php 
      $dir="images/ticker-images"
      $file_count = count(glob("{$dir}/*.*"))
    ?>

那么jquery就是这个

    $(document).ready(function(){
      var x;
      var y = <?php echo $file_count>;
      var dir = <? php echo $dir>;
      while true do {
        x = math.floor(math.random()*y);
        $("image-ticker").css({'background': 'url("' + dir + '/' + x + '.jpg"'});
        sleep(5);
      };
    };

如果我犯了一个新手错误,请友好,否则,请提前感谢。

  1. Sleep是一个PHP方法,不是JS方法。

  2. 你的do循环结构不正确。while条件应该出现在do块之后,而不是前面,如

    do {
        // code
    } while (condition);
    
  3. 您的dir变量可能是一个字符串,因此您需要用引号分隔它。

  4. dir的php块应该从<?php开始,而不是<? php

  5. 你的dirfile_count php块在你的js代码中缺少一个结束标签。

  6. 您的document.ready

  7. 后缺少右括号
  8. 你的php代码不以分号

  9. 结束
  10. javascript的Math对象是大写的

  11. 您的image-ticker选择器可能是id选择器,需要以散列(#)为前缀

试试这个:

<?php 
  $dir="images/ticker-images";
  $file_count = count(glob("{$dir}/*.*"));
?>

那么jquery就是这个

$(document).ready(function(){
  var x;
  var y = <?php echo $file_count ?>;
  var dir = "<?php echo $dir; ?>";
  var int=setInterval(function () {
    x = Math.floor(Math.random()*y);
    $("#image-ticker").css({'background': 'url("' + dir + '/' + x + '.jpg"'});
  },5000);
});

您的php在jquery部分缺少关闭标记。它需要关闭?>标记。
你的while循环需要有它的条件在括号-> while( run ) .
注意,我使用run,你需要一个条件时,使用循环,可以使其为假。否则你就会有一个无限循环,导致浏览器或电脑崩溃。编辑
此外,javascript使用do {} while();格式,其中循环放在花括号中,
和条件放在括号中。