如何使用 Dojo 动态添加 div?

Posted

技术标签:

【中文标题】如何使用 Dojo 动态添加 div?【英文标题】:How to add a div dynamically by using Dojo? 【发布时间】:2009-03-26 20:24:28 【问题描述】:

我有以下静态 div:

<body>
  <div id="div1"></div>
....

我想通过使用 dojo 在 div1 中动态添加一个 id 为“div1_1”的 div。我该怎么做?

【问题讨论】:

我喜欢的内部 div 是垂直和水平居中的。 使用 Dojo 0.9+ 或更早的 0.4? 【参考方案1】:

您可以只使用 Dojo Base 来完成 - 如果您使用的是 trunk 或 Dojo 1.3,则无需包含任何内容:

dojo.create("div", id: "div1_1", "div1");

这一行创建了一个 id 为“div1_1”的 div,并将其附加到 id 为“div1”的元素上。显然,您可以一次性添加更多属性和样式 — 在 the documentation for dojo.create() 中阅读所有相关信息。

【讨论】:

【参考方案2】:

另一个使用灵活dojo.place的选项:

dojo.place("<div id='div1_1'></div>", "div1", /*optional*/ "only");

【讨论】:

【参考方案3】:
// dojo 1.7+ (AMD)
var n = domConstruct.create("div");
// dojo < 1.7
var n = dojo.create("div");

【讨论】:

【参考方案4】:

dojo/dom-construct 也可用于创建新节点。

示例用法如下;

require([ "dojo/dom-construct", "dojo/_base/window" ], function(
        domConstruct, win) 
    // creates a new div and append it as the last child of the body
    domConstruct.create("div", null, win.body()));
);

dojo/dom-construct 参数是

    标签(div、h、img、li 等) 属性(新节点属性) 参考节点(新节点的放置位置) 位置(默认最后)

您可以查看文档以获取更多信息。

【讨论】:

【参考方案5】:
dojo.html.set(dojo.byId("div1"), "<div id='div1_1'></div>");

【讨论】:

我想我需要为 dojo.html 添加 dojo.request("...") 。包裹是什么? 对不起,应该是 dojo.require(...) 之类的东西 知道了:dojo.require("dojo.html");【参考方案6】:
var divNode = document.createElement("div");
divNode.id = "div1_1";
document.body.appendChild( divNode );

这是一个好方法,它有助于解决 IE7 中的一些节点引用问题,您可以稍后继续使用对 divNode 的引用。

【讨论】:

使用这个显示一个错误:找不到'div'结构。

以上是关于如何使用 Dojo 动态添加 div?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Zend_Dojo 表单元素动态添加到 zend_form?

Dojo dijit.layout.TabContainer - 如何将类添加到选项卡?

如何将自定义图像添加到按钮 (dojo 1.7)

如何将自定义图像添加到按钮(dojo 1.7)

如何将 dojo 事件添加到表单上的新元素?

如何在zend框架中为dojo动态树创建dojo数据onclick事件以实现程序化方法