2010-11-12 30 views
21

Nie rozumiem, dlaczego otrzymuję komunikat o błędzie za pomocą metody substring, aby zadeklarować zmienną.. Błąd pobierania: "nie jest funkcją"

Chcę użyć pierwszej części adresu URL w porównaniu.

strony: http://www.elizabet.nl/wordpress

Jest to część, która idzie źle:

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

Błąd: "currentLocation.substring nie jest funkcją"

Ale ta część kodu jest dobrze:

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

Wszystkie kod:

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. 

Odpowiedz

30

document.location to obiekt, a nie ciąg. Zwraca (domyślnie) pełną ścieżkę, ale w rzeczywistości zawiera więcej informacji.

Skrót do rozwiązania: document.location.toString().substring(2,3);

Albo użyć document.location.href lub window.location.href

1

można również cytat ciąg

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

TypeError: hex.substring nie jest funkcją

rozwiązany:

Należy wykonać:

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