html中.value =“somevalue”和set(value,“somevalue”)有什么区别?

时间:2014-05-14 02:16:05

标签: javascript dojo

我想知道html和javascript之间的区别。

  1. dijit.byId("link_id").value = linkData.link_id;
  2. dijit.byId("link_id").set("value",linkData.link_id);
  3. 因为,当我使用第一个选项时,它没有在linkid文本框中设置值,但是第二个选项就是这样做了。所以只是想知道两种情况下发生了什么。

1 个答案:

答案 0 :(得分:0)

不同之处在于,使用第一种方法,您可以直接设置窗口小部件对象的属性,例如设置value

然而,在第二个示例中,您使用dijit/_WidgetBase提供的setter,后者又调用_set函数,value属性_setValueAttr()属性_setValueAttr() 1}}。窗口小部件可以使用在使用该setter时将发生的自定义功能扩展这些setter。例如,它也可以采取必要的步骤来显示值。

如果我们选择 dijit / form / Select 小部件并查看{{3}}的代码,我们会注意到它会调用一些额外的函数,如:

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函数。