Javascript .value=”的区别是什么;somevalue“;并在html中设置(value,somevalue)?
我想知道html和javascript的区别Javascript .value=”的区别是什么;somevalue“;并在html中设置(value,somevalue)?,javascript,dojo,Javascript,Dojo,我想知道html和javascript的区别 dijit.byId(“link\u id”).value=linkData.link\u id dijit.byId(“link\u id”).set(“value”,linkData.link\u id) 因为,当我使用第一个选项时,它没有在linkid文本框中设置值,但第二个选项做到了这一点。所以我只是想知道在这两种情况下都发生了什么。不同之处在于,使用第一种方法,您直接设置小部件对象的属性,例如,设置值 但是,在第二个示例中,您使用的是由提供
dijit.byId(“link\u id”).value=linkData.link\u id代码>
dijit.byId(“link\u id”).set(“value”,linkData.link\u id)代码>
因为,当我使用第一个选项时,它没有在linkid文本框中设置值,但第二个选项做到了这一点。所以我只是想知道在这两种情况下都发生了什么。不同之处在于,使用第一种方法,您直接设置小部件对象的属性,例如,设置
值
但是,在第二个示例中,您使用的是由提供的setter,该setter反过来调用\u set
函数,对于value
属性,它将是\u setValueAttr()
。小部件可以使用自定义功能扩展这些setter,这些自定义功能将在使用该setter时发生。例如,它还可以采取必要的步骤来显示值
例如,如果我们选择一个dijit/form/Select小部件并查看的代码,我们会注意到它调用了一些额外的函数,如:
domAttr.set(this.valueNode, "value", this.get("value"));
this._refreshState(); // to update this.state
此功能仅在使用dijit.byId(“link_id”).set(“value”、“myValue”)时调用代码>,这就是您的值仅在本例中显示的原因。当您直接设置属性时,您是在“短路”此功能
TL;DR:在使用Dojo小部件时始终使用setter函数。这个问题与HTML属性无关。没有理由将其作为副本关闭。证明(这是处理setter的源代码的一部分):