Mootools可变范围问题

时间:2013-03-14 20:41:30

标签: variables scope mootools

我有一个问题让我的思维围绕变量范围,可以做一些帮助:)

我在joomla中设置了一个可以旋转图像的模块。我已经在非Joomla网站上使用了一些代码可以正常工作。但是我移植了它并且遇到了我认为是可变范围问题的问题所以任何想法都会很棒。

对于长代码很抱歉,但我包含了整个函数以防万一(当它工作时)它可能会帮助其他人。

function slideshow(container,containerCaption,previewCode,timer,classis,headerId,thumbOpacity,titlebar){
    var showDuration = timer;
    var container = $(container);
    var images = $(container).getElements('span');
    var currentIndex = 0;
    var interval;

    var preview = new Element('div',{
        id: containerCaption,
        styles: {
            opacity: thumbOpacity
        }
    }).inject(container);

    preview.set('html',previewCode);
    images.each(function(img,i){ 
    if(i > 0) {
        img.set('opacity',0);
    }
});

var show = function() {
    images[currentIndex].fade('out');
    images[currentIndex = currentIndex < images.length - 1 ? currentIndex+1 :         0].fade('in');

    var title = '';
    var captionText = '';

    if(images[currentIndex].get('alt')) {
        cap = images[currentIndex].get('alt').split('::');
        title = cap[0];
        captionText = cap[1];
        urltoUse = cap[2];
        preview.set('html','<span class="lctf1"><ahref="'+urltoUse+'">' 
            + title + '</a></span>' 
            + (captionText ? '<p>' + captionText + '</p>' : ''));
        }
    };

    window.addEvent('domready',function(){
        interval = show.periodical(showDuration);
    });
}

window.addEvent('domready',function() {
    container = "slideshow-container";
    containerCaption ="slideshow-container-caption";
    previewCode = '<span ><a href="<?php echo $itemurl[0];?>"><?php echo $itemtitle[0];?></a></span><p ><?php echo $itemdesc[0];?></p>';
    timer = <?php echo $slidetime*1000;?>;
    classis = 1;
    headerId = "";

    thumbOpacity =0.7;
    titlebar = "<?php echo $showTitle;?>";
    if($(container)){
        slideshow(container,containerCaption,previewCode,timer,classis,headerId,thumbOpacity,titlebar);
    }
});

抛出的javascript错误是预览未定义。

1 个答案:

答案 0 :(得分:0)

你的代码似乎有效,我在这里做了一个jsfiddle:http://jsfiddle.net/7E2MX/3/运行没有错误。

我确实改变了一行:

var images = $(container).getElements('span');

var images = $(container).getElements('img');