类中所有元素的Javascript set href

类中所有元素的Javascript set href,javascript,Javascript,我有一个类为“remove typefilter”的标签列表(至少4个) 它们没有“href”,但我想在用户单击按钮时给它们一个 这是我为实现这一点而编写的JS函数: function BuildButtons(urlparams) { elements = document.getElementsByClassName('remove-typefilter') for (let element in elements) { element.href = 'www

我有一个类为“remove typefilter”的标签列表(至少4个) 它们没有“href”,但我想在用户单击按钮时给它们一个

这是我为实现这一点而编写的JS函数:

function BuildButtons(urlparams) {
    elements = document.getElementsByClassName('remove-typefilter')
    for (let element in elements) {
        element.href = 'www.newlink.com' + urlparams
        element.style = 'color: red;'
    }
}
但是,当我运行这个函数时,它不会更改属性。A标记没有链接,样式也不会改变


有人知道我做错了什么吗?

for
循环返回的是索引,而不是实际的元素

for (let element in elements) {
应该是

for (let i in elements) {
    let element = elements[i];

两个问题:

  • 函数定义中的语法错误:
    url参数
    无效。使用
    urlparms
  • 用于。。。在
    循环中,迭代对象的键,而不是值。对…使用
    。。。而不是
此外:

  • 不要将
    元素
    定义为全局变量。使用
    const
  • 最好在URL中添加协议,如
    http://
  • 虽然将字符串指定给
    样式
    有效,但直接指定给相关样式属性更有效
更正代码:

function BuildButtons(urlParams) {
    const elements = document.getElementsByClassName('remove-typefilter');
    for (const element of elements) {
        element.href = 'http://www.newlink.com' + urlParams;
        element.style.color = 'red';
    }
}
为什么不使用和
函数构建按钮(urlparms){
var elements=document.querySelectorAll('.remove-typefilter');
elements.forEach(函数(元素){
element.href='www.newlink.com'+urlparms
element.style='颜色:红色;'
});
};
构建按钮(“#xxx”);//随时调用函数。
1
二

三个
您可以使用

Element.setAttribute(*name*,*value*);

这就解决了,谢谢!在我看来,在此之前还有其他答案,这也解释了问题所在。@Jasper是更完整的答案。@Jasper我同意mplungjan和trincot的观点
trincot
s的答案应该是被接受的,而不是我的。他的回答解释了你做错了什么+为什么以及如何修复。我的答案只是你如何解决你的任务的另一种方法。谢谢你的回答,我已经将trincots的答案设置为可接受的答案。可能是重复的
Element.setAttribute(*name*,*value*);