Javascript 更改一个<;a>;在它开火之前贴上标签

Javascript 更改一个<;a>;在它开火之前贴上标签,javascript,jquery,html,Javascript,Jquery,Html,我当前的问题是,我想在页面加载之前更改标签的href <a href = "#oldLink" onclick = "this.href = #newLink"></a> 这是行不通的,除非你在改变发生之前发出警告,然后它会按预期发生。任何帮助都将不胜感激,这是我第一次发布,因此,如果格式不正确,我深表歉意您可以通过JS通过以下方式重定向链接 changeLink(e){ window.location = "#newLink"; e.preventDe

我当前的问题是,我想在页面加载之前更改标签的href

<a href = "#oldLink" onclick = "this.href = #newLink"></a>

这是行不通的,除非你在改变发生之前发出警告,然后它会按预期发生。任何帮助都将不胜感激,这是我第一次发布,因此,如果格式不正确,我深表歉意

您可以通过JS通过以下方式重定向链接

changeLink(e){
    window.location = "#newLink";
    e.preventDefault();
}

你可以像这样通过JS重定向链接

changeLink(e){
    window.location = "#newLink";
    e.preventDefault();
}
您可以这样做:

HTML: 或:

更新: 您可以这样做:

HTML: 或:

更新: 你可以这样做 HTML

你可以这样做 HTML


你的第一个方法是正确的。你好像忘了引用这段文字:

<a href = "#oldLink" onclick = "this.href = '#newLink';"></a>

您的第一个方法是正确的。你好像忘了引用这段文字:

<a href = "#oldLink" onclick = "this.href = '#newLink';"></a>


处理单击前的链接时,不要更改
href
。相反,在页面加载和/或(如果链接打开一个新窗口或没有导致窗口重新加载)单击后,将其更改为更早的

例如:


请注意,链接总是将用户带到他们可以提前看到的地方,然后根据需要进行更新。

在处理单击之前的链接时,不要更改
href
。相反,在页面加载和/或(如果链接打开一个新窗口或没有导致窗口重新加载)单击后,将其更改为更早的

例如:



请注意,链接总是将用户带到他们可以提前看到的地方,然后根据需要进行更新。

这将创建一个循环。opps。。是的,刚刚认识到可能会添加
if($(this).attr('href')=='#newLink')返回?感谢@Matmarbon的建议,并补充说我刚刚尝试了第一个解决方案(编辑版),与您描述的完全一样,当出于某种原因单击链接时,jquery函数没有做任何事情。这将创建一个循环。opps。。是的,刚刚认识到可能会添加
if($(this).attr('href')=='#newLink')返回
?感谢@Matmarbon的建议,并补充说,正如您所描述的,我刚刚尝试了第一个解决方案(编辑版本),并且由于某种原因单击链接时,jquery函数没有做任何事情。您还必须更改OP调用的方式:
onclick=“changeLink(event);”
您还必须改变OP的调用方式:
onclick=“changeLink(event);”
恕我直言,这听起来很不可靠。为什么不让链接在被点击之前有正确的值呢?为什么您要交换用户可能已预览的值(在状态区域中,通过悬停),而不是使用您向他们显示的值?我基本上正在使用播放列表web应用程序,因此当您按随机按钮搅乱列表时,我希望播放列表集中在当前播放的歌曲上,这意味着我需要在触发链接之前更改链接位置。在这种情况下,我会在用户单击链接之前随机更改
href
。(例如在页面加载时,或在上一次单击[如果相关])后)href需要将页面转到当前播放的歌曲。无论哪种方式,当前的问题都是更改href,然后让页面移动,href更改的内容稍后会出现:)触发事件(主要是
单击
或其他事件)对于解决方案来说非常非常重要。恕我直言,这听起来非常危险。为什么不让链接在被点击之前有正确的值呢?为什么您要交换用户可能已预览的值(在状态区域中,通过悬停),而不是使用您向他们显示的值?我基本上正在使用播放列表web应用程序,因此当您按随机按钮搅乱列表时,我希望播放列表集中在当前播放的歌曲上,这意味着我需要在触发链接之前更改链接位置。在这种情况下,我会在用户单击链接之前随机更改
href
。(例如在页面加载时,或在上一次单击[如果相关])后)href需要将页面转到当前播放的歌曲。无论哪种方式,当前的问题都是更改href,然后让页面移动,href更改的内容稍后会出现:)触发事件(主要是
单击
或其他事件)对于解决方案来说非常非常重要。这很好,但对于我尝试做的事情来说不起作用。我正在随机组织一个视频列表,然后试图将页面移动到当前正在播放的视频所在的位置,这意味着我必须对视频进行随机操作,然后将href更改为当前正在播放的视频所在的位置,然后将页面移到该位置。@Ryan:这似乎符合“…在页面加载和/或…单击后…”的描述您似乎在推动一个遵循href属性当前值的解决方案,然后对其进行更改,这对我来说不是一个解决方案。@Ryan:我不是在推动它,我是在建议它,因为它很简单,而且不会误导用户。你还没有说为什么它对你不起作用。这很好,但对我正在努力做的事情不起作用。我正在随机组织一个视频列表,然后试图将页面移动到当前正在播放的视频所在的位置,这意味着我必须对视频进行随机操作,然后将href更改为当前正在播放的视频所在的位置,然后将页面移到该位置。@Ryan:这似乎符合“…在页面加载和/或…单击后…”的描述您似乎在推动一个遵循href属性当前值的解决方案,然后对其进行更改,这对我来说不是一个解决方案。@Ryan:我不是在推动它,我是在建议它,因为它很简单,而且不会误导用户。你还没说为什么它不适合你。
$(function () {

$("#link").on("click", function (e) {

    e.preventDefault(); //stop default behaviour

    $(this).attr("href", "#newLink"); // change link href

    window.location.href = "#link2";
  });

});
$(function () {

$("#link").on("click", function (e) {

    if ($(this).attr('href') === '#oldLink') // check if it is old link
    {

        e.preventDefault(); //stop default behaviour

        $(this).attr("href", "#newLink"); // change link href

        $(this).trigger("click"); // click link programmatically

    }
  });

});
$(function () {

    $("#link").on("click", function (e) {

        if ($(this).attr('href') === '#oldLink') // check if it is old link
        {

            $(this).attr("href", "#newLink"); // change link href

            $(this).trigger("click"); // click link programmatically

            return false;

        }
      });

    });
<a href = "#oldLink">abc</a>
$('a').attr("href", "some url");
<a href = "#oldLink" onclick = "this.href = '#newLink';"></a>
var link = $("#link");

setRandomLink();

link.click(function() {
  // Allow the link to be followed, then update it
  // with a new random value
  setTimeout(setRandomLink, 0);
});

function setRandomLink() {
  link.attr("href", "#" + Math.floor(Math.random() * 100));
}