从window.location.hash中移除#号

35

我有这段简单的脚本:

$(document).ready(function(){

var $yoyo = window.location.hash;

alert($yoyo);

});

但我需要去掉#符号,因为我将使用变量来定位div id。 我尝试使用.remove('#'),但似乎不起作用。

非常感谢!


https://dev59.com/1nM_5IYBdhLWcg3wZSI6#5298684 - vsync
4个回答

93
var $yoyo = window.location.hash.substring(1);

这意味着我们正在获取从第一个字符(索引为0,因此是第二个)开始的子字符串。请参阅子字符串文档。


9
只要字符串以“#”开头,这就有效,但有人认为这更健壮且更易于阅读:window.location.hash.replace(/^#/, "") - Christian Davén
@ChristianDavén window.location.hash 始终会在前面有一个哈希或为空,而 ''.substring(1) === '',因此我认为该解决方案非常健壮。不过,我认为你的更易读。 (另请参见http://lea.verou.me/2011/05/get-your-hash-the-bulletproof-way/) - Steve Harrison

15
var $yoyo = window.location.hash.replace("#", "");

.remove() 是一个 jQuery 的 DOM 操作函数。.replace() 是一个原生的 JavaScript 函数,用于在字符串中将一个字符串替换为另一个字符串。来自 W3Schools:

<script type="text/javascript">

var str="Visit Microsoft!";
document.write(str.replace("Microsoft", "W3Schools"));

</script>

当然,由于这是 Stack Overflow,它是一个 jQuery DOM 操作函数。但实际上它可以是任何东西。-_- - Will Morgan
@Will,这篇文章被标记为jQuery。它不可能是其他什么东西;) - Mike Sherov

3
$yoyo.substr(1)

2

对于那些可能没有阅读Steve Harrison分享的lea verou博客的人,使用更新的JS定义和少4个字节的版本如下:

let $yoyo = window.location.hash.slice(1)

Slice是一种数组方法,当给定一个索引时,返回从起始索引到最后一个索引的值。由于Javascript中的字符串被认为是一个字符数组,而位置哈希总是具有起始#或为空字符串,因此这个方法可以使用。
参考链接:http://lea.verou.me/2011/05/get-your-hash-the-bulletproof-way/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接