Javascript 更改HTML元素的属性值如何导致属性值的更改,反之亦然?

Javascript 更改HTML元素的属性值如何导致属性值的更改,反之亦然?,javascript,dom,Javascript,Dom,我过去认为更改HTML元素的属性值会导致属性值更改,但更改属性值不会导致属性更改,因为属性就像HTML描述的蓝图,而属性就是活动数据 但事实证明,使用普通JavaScript,如果我们更改属性值,属性值也会更改。虽然在一般情况下,属性值可以是任何数据类型,如字符串、布尔值或对象,但属性值只能是字符串。另一个区别是属性名不区分大小写,而属性名区分大小写。如JavaScript权威指南第6版第。375-376 我试过: 在其中设置属性值,在其中设置属性值 如果我们使用以下方法设置属性值: el.s

我过去认为更改HTML元素的属性值会导致属性值更改,但更改属性值不会导致属性更改,因为属性就像HTML描述的蓝图,而属性就是活动数据

但事实证明,使用普通JavaScript,如果我们更改属性值,属性值也会更改。虽然在一般情况下,属性值可以是任何数据类型,如字符串、布尔值或对象,但属性值只能是字符串。另一个区别是属性名不区分大小写,而属性名区分大小写。如JavaScript权威指南第6版第。375-376

我试过:

在其中设置属性值,在其中设置属性值

如果我们使用以下方法设置属性值:

el.setAttribute("src", "http://i.imgur.com/4rE6FHV.gif");
el.src = "http://i.imgur.com/4rE6FHV.gif";
显然,在setAttribute内部,它还可以调整属性值。但如果我们使用以下方法设置属性值:

el.setAttribute("src", "http://i.imgur.com/4rE6FHV.gif");
el.src = "http://i.imgur.com/4rE6FHV.gif";

所以,如果我们认为它像Obj.x=1,那么它就不应该引起任何其他的改变。上面的行如何导致属性值也发生更改?它在附近吗

ECMA-5和某些ECMA-3实现中的对象setter和getter函数类似于这样的情况:如果一个对象只有属性x和y,我们可以为半径定义setter和getter r,并将其用作a=obj.r或obj.r=3,这样获取半径将调用一个函数来使用x和y计算它,设置r将调用一个函数,根据新的r调整x和y的值,或 某些观察者模型,使属性观察属性值的变化,属性观察属性值的变化,或 我们可以认为它只是一个黑箱或魔术,客户端JavaScript始终保持属性和属性之间的值等价性?
我过去遇到过一个相关的问题。对于复选框输入,属性和属性“checked”似乎不同步。Chrome,windows,v29。如果在html中将checked属性设置为“true”,则复选框将以选中状态显示。但是,单击该框时,属性不会更改,尽管属性已选中!