在drupal 7中嵌入外部javascript时出现jquery错误

时间:2011-12-13 23:18:21

标签: ajax drupal jquery drupal-7

我有一个javascript代码:

   <script type="text/javascript">
  (function ($) {
  var speed = 50;
    var pic, numImgs, arrLeft, i, totalWidth, n, myInterval; 

$(window).load(function(){
    pic = $("#slider").children("img");
    numImgs = pic.length;
    arrLeft = new Array(numImgs);

    for (i=0;i<numImgs;i++){

        totalWidth=0;
        for(n=0;n<i;n++){
            totalWidth += $(pic[n]).width();
        }

        arrLeft[i] = totalWidth;
        $(pic[i]).css("left",totalWidth);
    }

    myInterval = setInterval("flexiScroll()",speed);
    $('#imageloader').hide();
    $(pic).show();  
});

function flexiScroll(){

    for (i=0;i<numImgs;i++){
        arrLeft[i] -= 1;        

        if (arrLeft[i] == -($(pic[i]).width())){    
            totalWidth = 0; 
            for (n=0;n<numImgs;n++){
                if (n!=i){  
                    totalWidth += $(pic[n]).width();
                }           
            }   
            arrLeft[i] =  totalWidth;   
        }                   
        $(pic[i]).css("left",arrLeft[i]);
    }
}
}(jQuery));
  </script>

如果我删除了嵌入功能标记(function ($) {,我会收到Uncaught TypeError: Property '$' of object [object DOMWindow] is not a function的错误,如果我将其包含在该标记中,我会Uncaught ReferenceError: flexiScroll is not defined

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

它不应该是})(jQuery);吗?

根本不是jQuery专家,而是我脚本中的内容?

答案 1 :(得分:0)

setInterval()是一个标准的Javascript函数而不是JQuery。

您可以像这样使用它来调用它

myInterval = setInterval(function() {
            flexiScroll();
        },2000);