【问题标题】:set multi attributes at once without jquery [duplicate]在没有jquery的情况下一次设置多个属性[重复]
【发布时间】:2016-10-18 22:12:32
【问题描述】:

有一种方法可以用更短的方式编写此代码 而不是

            var aTag = document.createElement('a');
            aTag.setAttribute('href', oUrl.toString());
            aTag.setAttribute('rel', "test");
            aTag.setAttribute('target', "_blank"),
            ...

我尝试使用以下不起作用的方法...可能吗? 我在带有 Jquery 的网络示例中找到了,但我现在不想使用它...

            var aTag = document.createElement('a'),
            .setAttribute('href', oUrl.toString()),
            .setAttribute('rel', "test"),
            .setAttribute('target', "_blank"),
            ...

【问题讨论】:

  • 您可以创建一个函数,该函数将地图作为输入并将这些属性逐个添加到元素中。

标签: javascript html dom


【解决方案1】:

当然,你可以使用循环。

function setAttributes(el, attrs) {
  Object.keys(attrs).forEach(function (attr) {
    el.setAttribute(attr, attrs[attr]);
  });
}

var aTag = document.createElement('a');

setAttributes(aTag, {
  href: oUrl,
  rel: "test",
  target: "_blank"
});

【讨论】:

  • 谢谢Domenic! ,我可以使用这个,我看到了你的 SO 简历,我们遇到了一些关于 chrome 的问题,是否可以尽快与你协商?也许你可以给出一些指导,如果是的话,请通过电子邮件告诉我如何或......有一个美好的一天,非常感谢!
【解决方案2】:

你可以创建一个for循环函数

function setAttr(el, attrs) {
  for(var key in attrs) {
    el.setAttribute(key, attrs[key]);
  }
}

然后调用它:

var aTag = document.createElement('a'),
setAttr(aTag, {
  "href": oUrl.toString(), 
  "rel": "test", 
  "target": "_blank"
});

【讨论】:

    猜你喜欢
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2021-05-13
    • 1970-01-01
    • 2018-04-25
    • 2014-01-07
    • 2011-05-01
    相关资源
    最近更新 更多