【发布时间】:2011-01-14 08:48:30
【问题描述】:
如何使用 JavaScript 将href 属性动态添加到链接?
我基本上想动态地将href 属性添加到<a></a>(即当用户单击网站中的特定图像时)。
所以来自:
<a>Link</a>
我要去:
<a href="somelink url">Link</a>
【问题讨论】:
标签: javascript html
如何使用 JavaScript 将href 属性动态添加到链接?
我基本上想动态地将href 属性添加到<a></a>(即当用户单击网站中的特定图像时)。
所以来自:
<a>Link</a>
我要去:
<a href="somelink url">Link</a>
【问题讨论】:
标签: javascript html
var a = document.getElementById('yourlinkId'); //or grab it by tagname etc
a.href = "somelink url"
【讨论】:
setAttribute)。有人知道这种方法是否标准吗?
HTMLLinkElement中定义的方法,支持设置某些字段,例如href。您必须查看参考资料,看看您可以使用哪一个,而不必setAttribute。另一个示例是 <table> 元素 (HTMLTableElement),您可以在其中使用 insertRow() 插入新行,而无需创建 <tr> 并将其附加到表中。
setAttribute() 和 getAttribute(),它们在 IE 中被破坏,并且并不总是符合您的预期。见stackoverflow.com/questions/4456231/…
我假设您知道如何获取 <a> 元素的 DOM 对象(使用 document.getElementById 或其他方法)。
要添加任何属性,只需在 DOM 对象上使用setAttribute 方法:
a = document.getElementById(...);
a.setAttribute("href", "somelink url");
【讨论】:
setAttribute 显然是标准(w3.org/TR/DOM-Level-2-Core/core.html#ID-F68F082),而且 W3C 没有定义任何它不起作用的属性。相反,我可以保证对于某些属性名称,使用该属性将失败。比如tagName和setAttribute——它们已经是Element接口的字段/方法。我在 W3C 文档中没有看到任何地方提到属性的属性。
tagName。您是在谈论自定义属性吗?
getAttribute 和 setAttribute; "tagName" 是不能用作属性的属性示例。只有在使用 HTML 时,并且对于 DOM HTML 规范中定义的某些属性,您才能使用属性来读取和分配属性。
tagName 是 JavaScript 中 Element 对象的属性,在 HTML 和 XML DOM 中,您不能通过 getAttribute("tagName") 获取元素的标签名称(IE 除外,其实现 @987654337 @ 和 setAttribute() 坏了),这似乎与您所说的完全相反。
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>
更实际的解决方案:
<a id="someId">Link</a>
const a = document.querySelector('#someId');
a.href = 'url';
【讨论】:
querySelector
我知道这里似乎有很多很好的答案,但对于我在 2022 年安吉拉的 Udemy Web 开发训练营中“告诉”我要做的事情来说,它们似乎都不够简单。
所以我想起了使用 scriplets 是多么简单,并想尝试一下,它也同样有效。
对于像我这样正在学习的人,让我解释一下: . - 带您到当前 URL 然后是静态路径 然后为每个帖子生成动态变量(它是一个博客网站)
<a href="./posts/<%= post.title %>">Read More</a>
这是在 EJS 页面中使用 JS
训练营的解决方案讲座也给出了相同的解决方案: https://www.udemy.com/course/the-complete-web-development-bootcamp/learn/lecture/12385596#overview
第 317 课
【讨论】:
在此处输入代码已添加 javasicript
var x = "www.google.com";
vay y = "550";
var z= x+y;
document.write('<a href="' + z + '">GONDER</a>');
【讨论】:
document.write 是一种可怕的方法,甚至很少考虑使用。