'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 1:[1]

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.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Sebastian Simon