如何使用 JavaScript 动态地向链接添加“href”属性?

IT技术 javascript html
2021-03-15 06:15:00

如何href使用 JavaScript 动态地属性添加到链接?

我基本上想动态添加一个href属性<a></a>(即当用户点击网站中的特定图像时)。

所以从:

<a>Link</a>

我需要去:

<a href="somelink url">Link</a>
6个回答
var a = document.getElementById('yourlinkId'); //or grab it by tagname etc
a.href = "somelink url"
有趣的。我不知道您可以将属性作为字段直接访问(与我下面的解决方案相比,使用setAttribute)。有谁知道这种方法是否标准?
2021-04-17 06:15:00
但是这两种方式都是正确的吗?不要试图批评答案——它很可能是正确的。但是在网络上,仅仅获得对您有用的东西是不够的。它需要在所有浏览器中工作,这意味着您需要遵循标准。FWIW,这也适用于我(在 Firefox 中),但我很想知道它是否真的是一种标准的方法。W3C DOM 规范(w3.org/TR/DOM-Level-2-Core/core.html)似乎没有提到它。
2021-04-18 06:15:00
@mgiuca:一般来说,对于 HTML DOM,您应该更喜欢使用属性而不是setAttribute()and getAttribute(),它们在 IE 中被破坏并且并不总是按照您的预期执行。参见stackoverflow.com/questions/4456231/...
2021-04-24 06:15:00
我认为在 DOM 元素上,href 是一个可以通过 el.href 直接设置的属性。相反, setAttribute(el,attr) 用于向特定 DOM 元素添加一些自定义属性,因此在这种情况下,无需使用它来设置 std。属性
2021-04-27 06:15:00
这些是更容易与元素交互的界面。例如,所有链接都定义了HTMLLinkElement支持设置某些字段的方法,例如href. 您必须查看参考资料以了解您可以使用哪一个而不必setAttribute另一个示例是<table>元素 ( HTMLTableElement ),您可以在其中insertRow()插入新行,而无需创建<tr>并将其附加到表格中。
2021-05-03 06:15:00

我假设您知道如何获取<a>元素的 DOM 对象(使用document.getElementById或其他方法)。

要添加任何属性,只需在 DOM 对象上使用setAttribute方法:

a = document.getElementById(...);
a.setAttribute("href", "somelink url");
@mgiuca:您似乎在发布最后一条评论后找到了相关规范。我不明白你关于属性失败的观点,然后提到tagName. 你在谈论自定义属性吗?
2021-04-18 06:15:00
我可能误解了,但这仍然令人困惑。tagName ElementJavaScript对象的属性,在 HTML 和 XML DOM 中,您无法通过getAttribute("tagName")(除了在 IE 中,其getAttribute()的实现setAttribute()已损坏)获取元素的标记名称,这似乎与您所说的完全相反。
2021-04-18 06:15:00
我的意思是 DOM(甚至在浏览器中实现)是一个通用规范,用于处理一般的 XML 树,而不仅仅是 HTML。处理任意 XML 元素时,可靠地获取和设置属性的唯一方法是getAttributeand setAttribute"tagName"是一个不能作为属性工作的属性的例子。只有在使用 HTML 时,并且对于 DOM HTML 规范中定义的某些属性,您才能使用这些属性来读取和分配属性。
2021-04-30 06:15:00
伙计,setattribute 对于修改属性来说是非常非标准的。要访问或修改当前值,您应该使用属性。例如,使用 elt.value 而不是 elt.setAttribute('value', val)。 developer.mozilla.org/en/DOM/element.setAttribute#Notes
2021-05-08 06:15:00
@naveen 它说“最值得注意的是在 XUL 中”,这大概不是这个。我不确定它指的是哪些其他值(“某些属性”非常模糊),但setAttribute显然是标准(w3.org/TR/DOM-Level-2-Core/core.html#ID-F68F082),并且 W3C 没有定义它不适用的任何属性。相反,我可以保证对于某些属性名称使用该属性会失败。例如tagName,和setAttribute-- 这些已经是 Element 接口的字段/方法。我在 W3C 文档中没有看到任何地方提到属性的属性。
2021-05-14 06:15:00
document.getElementById('link-id').href = "new-href";

我知道这是一篇旧帖子,但这里有一篇可能更适合某些人的单行文章。

首先,尝试更改<a>Link</a><span id=test><a>Link</a></span>.

然后,在您调用的 javascript 函数中添加如下内容:

var abc = 'somelink';
document.getElementById('test').innerHTML = '<a href="' + abc + '">Link</a>';

这样,链接将如下所示:

<a href="somelink">Link</a>
@MoisheLipsker 它仍然有效。即使它确实破坏了原始文件,它仍然以某种方式“设置”了 href。然而,这是不切实际的,因为它不会在不破坏之前的链接的情况下保留它,从而可能破坏其他属性和信息。
2021-04-16 06:15:00
你好。欢迎使用 Stackoverflow。OP 的问题似乎是关于如何将 an 添加href现有 a标签(我基本上想动态地将 href 属性添加到 <a></a>)。然而,这个答案似乎解释了如何创建一个a带有标签href
2021-05-14 06:15:00

更实际的解决方案:

<a id="someId">Link</a>

const a = document.querySelector('#someId');
a.href = 'url';
最后,有人使用 querySelector
2021-05-15 06:15:00