-5

我有这个脚本,但是在 IE8 中我得到错误:'photos are undiefienied',如果要解决这个问题,在哪里做:

    /*
* Author:      Marco Kuiper (http://www.marcofolio.net/)
*/
window.addEvent('load', function() {

    jQuery("#slideimg1").css({
            "background-image" : "url("+url+"/" + photos[0].image + ")"
    });
    if(photos.length >= 2){
        jQuery("#slideimg2").css({
                "background-image" : "url("+url+"/" + photos[1].image + ")"
        });
    }


    // Backwards navigation
    jQuery("#cp-back").click(function() {
        //stopAnimation();
        navigate("back");
    });
    // Forward navigation
    jQuery("#cp-next").click(function() {
        //stopAnimation();
        navigate("next");
    });


    //jQuery("#preload").hide();
    var activeContainer = 1;    
    var currentImg = 0;
    var animating = false;
    var first = false;
    var navigate = function(direction) {
        // Check if no animation is running. If it is, prevent the action
        if(animating) {
            return;
        }
        // Check which current image we need to show
        if(direction == "next") {
            currentImg++;
            if(currentImg == photos.length + 1) {
                currentImg = 1;
            }
        } else {
            currentImg--;
            if(currentImg == 0) {
                currentImg = photos.length;
            }
        }

        // Check which container we need to use
        var currentContainer = activeContainer;
        if(activeContainer == 1) {
            activeContainer = 2;
        } else {
            activeContainer = 1;
        }

        showImage(photos[currentImg - 1], currentContainer, activeContainer);

    };

    var currentZindex = -1;
    var showImage = function(photoObject, currentContainer, activeContainer) {
        //alert(currentContainer);
        animating = true;
        // Make sure the new container is always on the background
        currentZindex--;
        if(!first){
          //alert(first);
            //alert("aa");
            // Set the background image of the new active container
            jQuery("#slideimg" + activeContainer).css({
                "background-image" : "url("+url+"/" + photoObject.image + ")"
                //"display" : "block",
                //"z-index" : currentZindex
            });
            // Fade out the current container
            // and display the header text when animation is complete
            jQuery("#slideimg" + currentContainer).fadeOut(effectTime,function() {
                animating = false;
            });
            jQuery("#slideimg" + activeContainer).fadeIn(effectTime);

            //first = false;
        }else{
            //alert("bbb");
            jQuery("#slideimg" + activeContainer).fadeOut(effectTime,function() {
                animating = false;
            });
            jQuery("#slideimg" + currentContainer).fadeIn(effectTime);
            first = false;
            //animating = false;
        }
    };

    var stopAnimation = function() {
        // Clear the interval
        clearInterval(interval);
    };

    // We should statically set the first image
    navigate("next");

    if(photos.length > 1){
        // Start playing the animation
        interval = setInterval(function() {
            navigate("next");
        }, slideshowSpeed);
    }

});
4

1 回答 1

1

我注意到你对“照片”的使用,但我没有看到在任何地方声明的变量......至少,在主函数内部(因为它不是全局的),声明你的照片变量:

var photos = [];

此外,就像 Chris 所说,始终检查 var 是否已定义。:) 来源:https ://stackoverflow.com/a/17748905/2599797

if (photos) // Simple
if (typeof(photos) != 'undefined') // Type matching, if photos defaults to true it won't pass
if ($.isArray(photos)) // jQuery based Javascript/Prototype native array check
于 2013-07-19T14:39:03.400 回答