我正在尝试使用 dojo 的几个选项更改输入文本框的值,但不知何故这些选项不起作用。另一方面,当我尝试使用document.getElememtById选项更改文本时,我可以这样做。有人可以解释为什么我的道场选项不起作用吗?
if (response.responseJSON.errorMessage){
dom.byId("AuthInfo").innerHTML=response.responseJSON.errorMessage;
// dom.byId("AuthPassowrd").value="";
// domAttr.set("AuthPassowrd", "value", "");
// domConstruct.empty("AuthPassword");
document.getElementById("AuthPassword").value="";
}
我的HTML代码是-
<input type="password" placeholder="Enter password" id="AuthPassword"/>
我不确定这是否只是这段代码中的错字,但你写了"AuthPassowrd"
代替"AuthPassword"
.如果这里只是这种情况(而不是真正的代码),请阅读我的原始答案。
原答案
您确定导入了正确的模块(dojo/dom
、dojo/dom-attr
和dojo/dom-construct
)吗?这些示例对我来说效果很好。我做了一个JSFiddle来向你展示它是如何工作的。您可以使用以下命令导入这些模块:
require(["dojo/dom", "dojo/dom-attr", "dojo/dom-construct"], function(dom, domAttr, domConstruct) {
// Here you can use dom, domAttr and domConstruct
});
确保在执行命令之前加载 DOM。DOM 节点上的操作只能在加载 DOM 的该部分(或整个页面)时执行。通常你可以等到 DOM 准备好dojo/domReady!
插件:
require(["dojo/domReady!], function() {
// Will only be executed when the dom is ready
});
在第三个注释的代码行中,您使用domConstruct.empty("AuthPassword");
.这不适用于清除输入字段,但用于从 DOM 节点中删除所有子节点。文本框的值不是子节点,因此它不起作用。
你应该替换它:
domAttr.set("AuthPassowrd", "value", "");
跟:
domAttr.set(dom.byId("AuthPassword"), "value", "");