将 href 替换为 js 函数调用

Replace a href with a js function call

本文关键字:js 函数调用 替换 href      更新时间:2023-09-26

我想用需要包含网址的函数调用替换 href 中的 url。

例:我有以下字符串:

<a href="www.google.com">Google</a>
some other text
<a href="www.wikipedia.org">Wikipedia</a>

我想找回这样的字符串:

<a href="javascript:anyFunction('www.google.com');">Google</a>
some other text
<a href="javascript:anyFunction('www.wikipedia.org')">Wikipedia</a>
我已经用正则表达式

测试了一些方法,但我对正则表达式并不擅长。有人能解决我的问题吗?

编辑:对不起,我忘了写。我正在构建一个应用程序。我不能使用jQuery或"document"。我认为唯一的方法是正则表达式。

试试这个正则表达式:

/href="([^"]+)/g

这是它的用法示例(JsFiddle Demo)

var subject = '<a href="www.google.com">Google</a>some other text<a href="www.wikipedia.org">Wikipedia</a>';
var result = subject.replace(/href="([^"]+)/g, 'href="javascript:anyFunction(''$1'')');

如果您为hrefs提供唯一的 ID,则可以执行以下操作:

var val = $("#myHref").attr("href");
$("#myHref").attr("href", "javascript:anyFunction('"+val+"');");

如果你想避免唯一ID,那么你可以这样做(应用于所有a):

​$("a").each(function() {
    var val = $(this).attr("href");
    $(this).attr("href", "javascript:anyFunction('"+val+"');");
});​​​

如果你想避免将其应用于所有 href,你可以给所有你想要更改的 href 一个类,然后使用这样的选择器:$(".hrefToModify")...

新增:

如果你可以使用javascript,那么你可以访问锚标签本身吗?如果是这样:

anchor_element.href = "javascript:anyFunction('" + anchor_element.href + "')";

老:

<a id="link1" href="www.google.com">Google</a>
some other text
<a id="link2" href="www.wikipedia.org">Wikipedia</a>
<script>
document.getElementById('link1').addEventListener('click', function(e) {
    alert('hello');
    e.preventDefault();
    return false;
});
</script>