js中设计问题

我使用锚点进行静态的Url传值,用来做导航。
image.png
这个是我传值的内容,点击的时候url是改变了。
但是使用location获取href的值的时候确是上一次的url值,而正确的值被存储在下面,需要下一次点击的时候才能拿到。
image.png
如图所示;这样导致我得点击两次才能进行获取到正确值,下面是点击两次
image.png
这时候的localtion才能拿到正确值,这是什么原因呢????,求大神帮我解决一下,谢谢了
就像这样,我里面有hash值,但是就是提前不到:
image.png

这是我提前的代码
image.png

阅读 3.4k
4 个回答

监听hashchange就可以了,给你参考代码

<body>
  <a href="#user">user</a>
  <a href="#login">login</a>
</body>
<script>
  //hash改变就会触发
  window.onhashchange = function () {
    var hash = window.location.hash;//获取hash
    hash = hash.substring(1);//去掉前面的#
    console.log('%clog: ' + hash, 'color:#00f;font-siz:16px;line-height:20px;')
  };
</script>

onclick的执行顺序优于href顺序,执行完onclick才会执行href跳转。

最直观的体现就是可以在点击事件里取消默认来阻止跳转,你这里的现状也可以说明。

所以解决办法就是监听onhashchange事件,或者在点击事件中延迟输出。


定时器和onhashchange不是什么难的东西,你应该学会查找资料,而不是做伸手党

$('.xxx').on('click', function(event){
    //event.preventDefault()
    console.log(location.hash)
    setTimeout(function(){
        console.log(location.hash)
    })
})

window.onhashchange = function(event) {
    console.log(location.hash);
};

监听 hashchange 事件。

请问你怎么提取的?
--update------
改用onhashchange, 建议还是去了解一下这些事件执行的时机

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题