使用Javascript&#39的setAttribute()后面的原因是什么?

时间:2018-04-26 14:30:59

标签: javascript css

如果我单独设置我的属性,那么它们之后都是正确的:

document.getElementById("FlightPanels").style.height = (PANEL_HEIGHT + 20) + "px";
document.getElementById("FlightPanels").style.width = container_width + "px";

即使我先设置宽度,然后设置高度,它们也是正确的。

但是,如果我使用setAttribute():

document.getElementById("FlightPanels").setAttribute("style", "height:" + (PANEL_HEIGHT + 00) + "px");
document.getElementById("FlightPanels").setAttribute("style", "width:" + container_width + "px");

如果我先设置高度,则会丢失宽度。如果我先设置宽度,则会丢失高度。

我见过使用setAttribute()在一次调用中设置所有所需属性的解决方案,传递一个具有多个要设置的属性的javascript对象。

对我而言,这似乎比单独直接设置属性更加复杂,而且可读性更低。

如果我要设置大量属性,我发现个人设置方法更容易理解和理解。

我的问题是,是否有一些令人信服的理由,也许我不知道,这使得setAttribute()成为首选解决方案? 我是否应该将setAttribute()用于某些原则性或最佳实践"原因?或者如上所示单独设置属性是否可以?

我希望代码不仅可以工作,而且还符合标准。

编辑:感谢输入,伙计们,但我的问题的一部分与为什么两个后续调用setAttribute()相互撤消有关。是因为我以某种方式滥用它吗?或者这是该功能的预期设计?在这方面,它不是任何重复,因为标记的重复问题不涉及此事。但是您的意见很有帮助。感谢。

1 个答案:

答案 0 :(得分:0)

setAttribute是用于设置任何 HTML属性的通用函数。

您很少想要修改属性值的部分

style属性表示完整的CSS规则集,您通常需要修改它的特定部分。

setAttribute通常不适用于设置style

  

感谢输入,伙计们,但是我的问题的一部分与为什么对setAttribute()的两个后续调用相互撤消有关。

第一个调用将属性设置为某个值。

第二个将其设置为其他内容。

设定。不附加。它用旧值替换旧值。