2011-02-03 104 views
0

我收到了一些javascript错误,并想知道是否有人可以帮助我与他们。我对js相当陌生,可以真正使用帮助。这里说的是带有错误的页面。 http://www.gotopeak.com

以下是错误:

未捕获的类型错误:对象的属性 '$'[对象DOMWindow]不是函数 误差是在线路44

下面是代码:

var hoverButton = { 
    init : function() {  
     arrButtons = $$('.hover_button'); 

     for (var i=0; i<arrButtons.length; i++) { 
      arrButtons[i].addEvent('mouseover', hoverButton.setOver); 
      arrButtons[i].addEvent('mouseout', hoverButton.setOff); 
     } 

    }, 
    setOver : function() { 
     buttonImageSource = this.src; 
     this.src = buttonImageSource.replace('_off.', '_hover.'); 
    }, 
    setOff : function() { 
     buttonImageSource = this.src; 
     if (buttonImageSource.indexOf('_hover.') != -1) { 
      this.src = buttonImageSource.replace('_hover.', '_off.'); 
     } 
    } 
} 

window.addEvent('domready', hoverButton.init); 



var screenshots = { 
    numScreens : 0, 
    currScreen : 0, 
    screenContainerAnimation : null, 
    screenFadeSpeed : 200, 
    animating : false, 
    initialized: false,  

    init : function() { 
     var arrScreens = $$('#screen_container .screenshot'); 
     screenshots.numScreens = arrScreens.length; 

     screenshots.screenContainerAnimation = new Fx.Tween('screen_container', { 
      duration: 300, 
      transition: Fx.Transitions.Quad.easeInOut 
     }); 

     var indicatorMold = $('indicatorMold'); 

     for(i=0; i<arrScreens.length; i++) { 

      var screenShot = arrScreens[i]; 
      screenShot.id = 'screenshot' + (i+1); 

      var screenIndicator = indicatorMold.clone(); 
      screenIndicator.id = 'indicator' + (i+1); 
      screenIndicator.inject('screen_indicators'); 
      screenIndicator.href = 'javascript: screenshots.setActiveScreen('+ (i+1)*1 +')';    

      screenShot.removeClass('hidden');    

      if (i==0) { 
       var initialScreenHeight = screenShot.getCoordinates().height; 
       $('screen_container').setStyle('height', initialScreenHeight); 
       screenshots.currScreen = 1; 
       screenIndicator.addClass('active'); 
      } 
      else { 
       screenShot.setStyle('opacity',0); 
       screenShot.setStyle('display','none'); 
      }   

     } // loop 

     screenshots.initialized = true; 
    }, 

    next : function() { 
     if (screenshots.initialized) { 
      var nextNum = screenshots.currScreen + 1; 

      if (nextNum > screenshots.numScreens) { 
       nextNum = 1; 
      } 

      screenshots.setActiveScreen(nextNum); 
     } 

     return false; 
    }, 

    previous : function() { 
     if (screenshots.initialized) { 
      var prevNum = screenshots.currScreen - 1; 

      if (prevNum < 1) { 
       prevNum = screenshots.numScreens; 
      } 

      screenshots.setActiveScreen(prevNum); 
     } 

     return false; 
    }, 

    setActiveScreen : function(screenNum) { 
     if(screenshots.animating == false) { 
      screenshots.animating = true; 
      var currScreen = $('screenshot' + screenshots.currScreen); 
      var currIndicator = $('indicator' + screenshots.currScreen); 
      var newScreen = $('screenshot' + screenNum); 
      var newIndicator = $('indicator' + screenNum); 

      currScreen.set('tween', { 
       duration: screenshots.screenFadeSpeed, 
       transition: Fx.Transitions.Quad.easeInOut, 
       onComplete: function() { 
        currIndicator.removeClass('active'); 
        currScreen.setStyle('display','none') ; 
       } 
      }); 
      currScreen.tween('opacity', 0); 

      function resizeScreen() {  
       newScreen.setStyle('display','block'); 
       var newScreenSize = newScreen.getCoordinates().height; 
       screenshots.screenContainerAnimation.start('height', newScreenSize); 
      } 

      function fadeInNewScreen() { 

       newScreen.set('tween', { 
        duration: screenshots.screenFadeSpeed, 
        transition: Fx.Transitions.Quad.easeInOut, 
        onComplete: function() { 
         newIndicator.addClass('active'); 
         screenshots.animating = false; 
        } 
       }); 
       newScreen.tween('opacity', 1); 
      } 

      resizeScreen.delay(screenshots.screenFadeSpeed); 
      fadeInNewScreen.delay(screenshots.screenFadeSpeed + 400); 

      screenshots.currScreen = screenNum; 
     } 
    } 
} 

window.addEvent('load', screenshots.init) ; 

我会非常感谢和赞赏我在这个问题上得到的任何帮助。我会给你买一杯啤酒作为回报。

谢谢你的时间!

+2

哪一个是线44? – 2011-02-03 13:04:17

+0

有人可以解释为什么各个地方OP使用“$$”?例如:“arrButtons = $$('。hover_button');” – Chris 2011-02-03 13:07:00

回答

1

编辑:请忽略。 igorw的上述答案是正确的。抱歉。

尝试将您的$符号转换为“jQuery”。 $是JQuery的捷径。 $是为Wordpress中的Prototype保留的。

编辑:你也可以试试jQuery.noConflict()。它将$的控制交还给JQuery(或实现它的第一个库),所以它不会与其他也实现$的库冲突。

5

您的页面正在加载mootools一次,jQuery两次,jQuery UI两次。因为jQuery和mootools都定义了一个名为'$'的函数,这会给你带来冲突。

您可以通过使用自我执行的闭包来解决这个问题,该闭包将非冲突版本的'$'映射到您实际可以使用的本地'$'变量。关于MooTools的 “美元安全模式”

(function($) { 
    // your code 
})(document.id); 

更多信息,可以发现here

0

这是我做的,解决了一切,去index.php文件,立即调用的jQuery后,将<script type="text/javascript">jQuery.noConflict();</script>