2011-02-03 78 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>