Javascript .value=”的区别是什么;somevalue“;并在html中设置(value,somevalue)?

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文本框中设置值,但第二个选项做到了这一点。所以我只是想知道在这两种情况下都发生了什么。不同之处在于,使用第一种方法,您直接设置小部件对象的属性,例如,设置值 但是,在第二个示例中,您使用的是由提供

我想知道html和javascript的区别

  • 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的源代码的一部分):