一段时间以来,我一直在用头撞各种无生命的物体。我正在使用 jQuery 创建一个促销横幅旋转的东西。每 2 秒(我会在未来将其更改为更多,只是为了测试它是否简短),图像和标题会更改。
这很好用,它在它们之间旋转,当它到达最后一个时,它会回到开头。但是当我点击一个,它会回到开头(或者我明确地点击第一个),当它下一次尝试旋转时,它会抛出这个:
Uncaught TypeError: Cannot read property '0' of undefined /ftwc/:178
changeImage
rotate
关于我的两个功能。我不明白为什么!
这是脚本:
changeImage = function(num) {        
  $(".currentpromoimage").before('<div class="promoimage newpromoimage" style="background: url(\''+images[num][0]+'\') no-repeat; z-index: 1;"><div class="caption" style="color: #'+images[num][2]+'">'+images[num][1]+'</div></div>');
  $(".currentpromoimage").fadeOut(700,function(){
      $(".newpromoimage").addClass("currentpromoimage");
      $(".newpromoimage").removeClass("newpromoimage");
      $(this).remove();
  });
  $(".newpromoimage").fadeIn(700);
  $("#promoselect").children().children().css('background', '#303030');
  $("#ps_"+num).css('background', '#000000');
  currentImage = num;
};
rotate = function() {
    var imageLength = images.length-1;
    if (currentImage == imageLength) {
        changeImage("0");
    } else {
        var nextImage = currentImage+1;
        /*alert("nextImage:"+nextImage);*/  
        changeImage(nextImage);
    }
};
var selectors = "";
var preloads = '';
for(var i=0;i<images.length;i++) {
    preloads += '<img src="'+images[i][0]+'" alt="preloaded" class="preload">';
    selectors += "<li id=\"ps_"+i+"\"></li>";
 }
 $("body").prepend(preloads);
 $("#grass").after('<div id="promo"><div id="promoselect"><ul></ul></div><div class="promoimage currentpromoimage" style="background: url(\''+images[0][0]+'\') no-repeat; z-index: 1;"><div class="caption" style="color: #'+images[0][2]+'">'+images[0][1]+'</div></div></div>');
    var currentImage = 0;
    $("#promoselect").children().append(selectors);
    $("#ps_0").css('background', '#000000');
    $("#promoselect")
        .children()
        .children()
        .click(function() {
            var selector = $(this).attr("id").split("_");
            clearInterval(autoimage);
            changeImage(selector[1]);
            autoimage = setInterval(rotate,2000);   
    });
    autoimage = setInterval(rotate,2000);
这都是在 jQuery 文档就绪函数中调用的,图像是使用 json_encode 从 PHP 编码的数组。我知道现在很乱,但我就是不明白为什么这些函数看起来未定义..
谢谢!