Javascript中setAttribute和点表示法有什么区别?

LJM*_*LJM 6 javascript

可能重复:
何时在JavaScript中使用setAttribute vs .attribute =?

为什么有时会设置这样的属性:

x.type = "submit"; 
Run Code Online (Sandbox Code Playgroud)

和其他时间这样:

x.setAttribute("type", "submit");
Run Code Online (Sandbox Code Playgroud)

我总是认为哪种方式无关紧要,但我有一个问题:

x.onClick = save;
Run Code Online (Sandbox Code Playgroud)

但当我把它切换到这个时它起作用:

x.setAttribute("onClick", "save()");
Run Code Online (Sandbox Code Playgroud)

Lès*_*sté 4

setAttribute仅适用于 DOM 元素并小写 HTML 元素上的属性名称。并且您不能使用点表示法为动态属性名称分配值。

还有这个:

用于setAttribute()修改某些属性(尤其是 XUL 中的值)的工作方式不一致,因为属性指定了默认值。要访问或修改当前值,您应该使用属性。例如,使用elt.value代替 elt.setAttribute('value', val).