为什么不 getElementByClassName -> getElementsByTagName ->; setAttribute 工作吗?
我想在新选项卡中打开某些链接。由于我无法将其直接设置到 标记中,因此我想将链接放入具有特定类名的
标记中,并设置通过 JavaScript 的目标属性。
我以为这很容易,但我无法让它发挥作用:
addOnloadHook(function () {
document.getElementByClassName('newTab').getElementsByTagName('a').setAttribute('target', '_blank');
});
<span class="newTab"><a href="http://www.com">Link</a></span>
我做错了什么?
I want open certain links in a new tab. Since I can't set it directly into the <a>
tag, I want to put the link into <span>
tags with a certain class name and set the target attribute via JavaScript.
I thought this would be easy, but I can't get it working:
addOnloadHook(function () {
document.getElementByClassName('newTab').getElementsByTagName('a').setAttribute('target', '_blank');
});
<span class="newTab"><a href="http://www.com">Link</a></span>
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
document.getElementByClassName
不存在,正确的函数是document.getElementsByClassName
(注意额外的s
)。它返回一个匹配节点的数组,因此您必须给出一个索引:document.getElementByClassName
does not exist, the correct function isdocument.getElementsByClassName
(note the extras
). It returns an array of matching nodes, so you've to give an index:但您可能需要使用页面上指定的类(“newTab”)迭代每个范围才能使其正常工作:
如果您在一个范围内有超过 1 个锚标记,您还需要
必须像这样迭代锚标记:
but you might need to iterate through every span with the specified class ('newTab') on the page for it to work:
in case you'll have more than 1 anchor tag in a span you'd also
have to iterate through the anchor tags like this: