为什么使用javascript创建并使用dojo.place()
放置在DOM树中的复选框呈现为input[type="text"]
而不是input[type="checkbox"]
元素?
生成的HTML代码:
<input id="baseCalcRoundCustomized"
name="hierarchicalRounding.baseCalcRoundCustomized"
value="0" dojoType="dijit.form.CheckBox" class="pcheckbox"
onchange="checkValue(this.id)" unchecked />
答案 0 :(得分:1)
当您动态添加DOM节点时,它们将不会转换为Dojo小部件(dijit)。要成为这样的小部件(dijit),需要解析DOM节点。如果您将Web应用程序设置为使用parseOnLoad
,它将在加载网页时自动解析HTML页面,这就是为什么以这种方式添加的窗口小部件将正常工作。
有两种选择:
第一个是使用dojo/parser
模块自己解析新添加的DOM节点。您可以使用parse()
函数再次解析页面,但您也可以指定应该解析的DOM节点。有关此模块的更多信息,请访问API docs或reference guide。
另一种方式(我推荐这个)是通过以编程方式添加小部件而不是仅添加DOM节点并解析它。您可以在reference guide了解更多相关信息。