2010-11-12 121 views
21

我不明白爲什麼我會使用substring方法來聲明一個錯誤消息來聲明一個變量。.substring錯誤:「不是函數」

我想在比較中使用URL的第一部分。

網站:http://www.elizabet.nl/wordpress

這是地方出了錯部分:

var currentLocation = document.location, 
muzLoc = currentLocation.substring(0,45), 
prodLoc = currentLocation.substring(0,48), 
techLoc = currentLocation.substring(0,47); 

錯誤: 「currentLocation.substring是不是一個函數」

但是這部分代碼是罰款:

var URL = $(this).attr("href").substring(2) + ' #main'; 

所有的代碼:

jQuery(function($){ 

    var siteURL = "http://" + top.location.host.toString() + "/wordpress", // Declareren van URL van de website. 
     URL = '', // Declareren van een URL, welke dan ook. 
     currentLocation = '', 
     muzLoc = '', 
     prodLoc = '', 
     techLoc = '',    
     allLinks = $('a[href^=' + siteURL + ']'), // Declareren van alle menu-links. Het teken^betekent 'begint met'. 
     otherLinks = $('a[href^=' + siteURL + "/wp-content" + ']'), 
     siteLinks = $(allLinks).not(otherLinks),  
     mainDiv = $("#content"), 
     hash = window.location.hash, 
     muziekURL = "http://www.elizabet.nl/wordpress/#/muziek_pf/", 
     productieURL = "http://www.elizabet.nl/wordpress/#/productie_pf/", 
     techniekURL = "http://www.elizabet.nl/wordpress/#/techniek_pf/";  

    if (hash) { 
     hash = "/wordpress" + hash.substring(1); // substring methode haalt karakters van je string af. In dit geval de #, vanwege de offset=1. 
     URL = hash; 
     $(mainDiv).load(URL);   
    } 

function pageLoad() { 

       var allLinks = $('a[href^=' + siteURL + ']'), 
       otherLinks = $('a[href^=' + siteURL + "/wp-content" + ']'), 
       siteLinks = $(allLinks).not(otherLinks); 

       siteLinks.each(function() {    

        $(this).attr("href", "#" + this.pathname.substring(10)); 
        }) 

        .click(function() { 
        var URL = $(this).attr("href").substring(2) + ' #main'; 
        $(mainDiv).load(URL, function(){ 

        var currentLocation = document.location, 
         muzLoc = currentLocation.substring(0,45), 
         prodLoc = currentLocation.substring(0,48), 
         techLoc = currentLocation.substring(0,47);     

       if (muzLoc == muziekURL) {    
       $("body").animate({ backgroundColor: "#151C07"}, 500); 
       $(".nieuws").animate({ borderBottomColor: "#99CC33"}, 500); 
       $("#stripe_trans").add("#header").animate({ backgroundColor: "#99CC33"}, 500); 
       $("#tabtekst_3").stop().animate({ backgroundColor: "#B8860B" }, 500); 
       $("#tab_3").add("a.gold").stop().animate({ color: "#B8860B" }, 500); 
       $("#tabtekst_4").stop().animate({ backgroundColor: "#765AAD" }, 500); 
       $("#tab_4").add("a.purple").stop().animate({ color: "#765AAD" }, 500);          
       } 

       else if (prodLoc == productieURL) {  
       $("body").animate({ backgroundColor: "#251B02"}, 500); 
       $(".nieuws").animate({ borderBottomColor: "#FFCC33"}, 500); 
       $("#stripe_trans").add("#header").animate({ backgroundColor: "#FFCC33"}, 500);     
       $("#tabtekst_2").stop().animate({ backgroundColor: "#6B8E23" }, 500); 
       $("#tab_2").add("a.green").stop().animate({ color: "#6B8E23" }, 500); 
       $("#tabtekst_4").stop().animate({ backgroundColor: "#765AAD" }, 500); 
       $("#tab_4").add("a.purple").stop().animate({ color: "#765AAD" }, 500); 
       } 

       else if (techLoc == techniekURL) {  
       $("body").animate({ backgroundColor: "#181223"}, 500); 
       $(".nieuws").animate({ borderBottomColor: "#B39BE4"}, 500); 
       $("#stripe_trans").add("#header").animate({ backgroundColor: "#B39BE4"}, 500);   
       $("#tabtekst_2").stop().animate({ backgroundColor: "#6B8E23" }, 500); 
       $("#tab_2").add("a.green").stop().animate({ color: "#6B8E23" }, 500);      
       $("#tabtekst_3").stop().animate({ backgroundColor: "#B8860B" }, 500); 
       $("#tab_3").add("a.gold").stop().animate({ color: "#B8860B" }, 500); 
       } 

       else { 
       $("body").animate({ backgroundColor: "#202020"}, 500); 
       $(".nieuws").animate({ borderBottomColor: "#FFF"}, 500); 
       $("#stripe_trans").add("#header").animate({ backgroundColor: "#FFF"}, 500);    
       $("#tabtekst_2").stop().animate({ backgroundColor: "#6B8E23" }, 500); 
       $("#tab_2").add("a.green").stop().animate({ color: "#6B8E23" }, 500);    
       $("#tabtekst_3").stop().animate({ backgroundColor: "#B8860B" }, 500); 
       $("#tab_3").add("a.gold").stop().animate({ color: "#B8860B" }, 500); 
       $("#tabtekst_4").stop().animate({ backgroundColor: "#765AAD" }, 500); 
       $("#tab_4").add("a.purple").stop().animate({ color: "#765AAD" }, 500);           
       } 

       pageLoad(); 
      });    
     }); 
} 

pageLoad(); 


}); // End document ready function. 

回答

30

document.location是一個對象,而不是一個字符串。它返回(默認情況下)完整路徑,但它實際上擁有比這更多的信息。

快捷的解決方案:document.location.toString().substring(2,3);

或者使用document.location.hrefwindow.location.href

1

你也可以報價串

''+document.location+''.substring(2,3); 
1

類型錯誤:hex.substring不是一個函數

解決:

您需要做的事

hex = '0x4a6f7264616e0000000000000000000000000000000000000000000000000000' 
//because you probably only coppied the hexcode, you need to copy the quotes too