Search code examples
javascripthref

How to add string to window.location.hash


Any ideas how can I write this:

var hashValue = "#" + window.location.hash.substr(1);
$([document.documentElement, document.body]).animate({
        scrollTop: $(hashValue).offset().top
        
}, 500);

Without getting this error:

Uncaught Error: Syntax error, unrecognized expression: #

It is working like that, but I don't want to see this error in the console.


Solution

  • var hashValue = "#" + window.location.hash.substring(1);
    
    $([ document.documentElement, document.body ]).animate({
      scrollTop: hashValue === '#' ? 0 : $(hashValue).offset().top
    }, 500);
    

    Let’s just assume window.location.hash is the empty string. In this case hashValue is "#".

    So the jQuery call $(hashValue) doesn’t recognize it as an element ID, so it throws a syntax error.