在没有页面滚动的情况下更改location.hash

时间:2012-11-06 01:28:30

标签: javascript jquery dom

    hash = hash.replace( /^#/, '' );
var node = $( '#' + hash );
if ( node.length ) {
  node.attr( 'id', '' );
}
document.location.hash = hash;
if ( node.length ) {
  node.attr( 'id', hash );
}

我在上面的代码中遇到了问题,我从这篇文章中抓获:Modifying document.location.hash without page scrolling,尝试暂时替换div的id,同时将location.hash更改为id。 hash在控制台中出现此错误:未捕获的ReferenceError:未定义哈希。我是JS的新手,需要一点指导!谢谢:))

2 个答案:

答案 0 :(得分:1)

第一行似乎错了:

hash = hash.replace( /^#/, '' );

你确定在它之前定义了哈希变量吗?

我认为必须是这样的:

var hash = document.location.href;
hash = hash.replace( /^#/, '' );

然后其余代码不应导致错误

答案 1 :(得分:1)

  • 确保您已正确定义hash

  • 如果您正在处理锚点击事件,请确保return false