[英]Updating a jump links href on click
我正在尝试在点击时更新跳转链接href。 我将初始跳转链接设置为如下所示:
<a href="#2" id="next">Next</a>
然后,我使用一些JavaScript来更新href onclick:
var jump = this.href.match(/\#\d+$/)[0];
var num = parseInt(jump.substr(1, jump.length), 10);
var newNum = num + 1;
document.getElementById('next').href = '#' + num;
由于某种原因,当我第一次单击跳转链接时,它将带我到#3(而不是预期的#2)。 如果将HTML中的href更改为#1,它将带我进入#2,这似乎与直觉相反。 我想我的问题是,在href由JavaScript更新后(似乎是)会发生跳转吗? 以及如何让它先跳转然后更新href?
(此外,我正在使用addEventListener()来触发点击)。
var jump = this.href.match(/\#\d+$/)[0];
var num = parseInt(jump.substr(1, jump.length), 10);
var newNum = num + 1;
setTimeout(function() {
document.getElementById('next').href = '#' + newNum;
});
小型重构:
var num = parseInt(this.href.split('#').pop(), 10);
var a = this;
setTimeout(function() {
a.href = '#' + (num + 1);
});
您所遇到的问题很可能是因为如您所猜想的那样,是在触发事件之前发生了跳转,并且这导致this
是新链接,您可以使用console.log(this)
进行检查,这种情况将使用event.preventDefault();
在这种情况下,这将无法使链接正常工作,并且您的代码将首先运行。 并确保,您可以在事件侦听器中添加预防措施,如下所示:
something.addEventListener("click", function(event) {
event.preventDefault();}, false)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.