动态创建DOM内容
Creating DOM content dynamically
我只是在玩一些Firefox扩展程序,遇到了一个问题。假设我想创建一种网格,每条线都由很多元素组成。如果我想动态地将x行添加到面板中,我想我必须这样做:
for(var i=0; i<x; i++) {
tempButton = document.createElement("button");
tempLabel = document.createElement("label");
tempWhatever = document.createElement("button");
...
tempButton.setAttribute("label", "YippeYeah");
...
container.appendChild(tempButton);
container.appendChild(tempLabel);
container.appendChild(tempWhatever);
}
这不是有点痛苦吗?思考嵌套的vbox、hbox、样式。。。用于格式化所有元素以获得良好的布局?
是否可以创建一个用户定义的.js对象,该对象由按钮、标签和Whatever的元素信息组成;然后将一个"template"-.xul文件与每个网格行关联以供重用,并只执行
for(var i=0; i<x; i++) {
container.appendChild(myObjArray[i]);
}
建造电网不那么痛苦。
这有道理吗?还是我错了?当做Alex
是的,用DOM方法动态创建接口有点痛苦。您可能需要使用XBL。
如果你不想/不能使用XBL,你也可以使用一个模板节点并克隆它。我的文档中通常有一个节点,如下所示:
<hbox id="rowTemplate" hidden="true">
<button class="hiButton" label="Hi!"/>
<description class="explanation"/>
...
</hbox>
我创建了这样的实际行:
var container = document.getElementById("rowTemplate").cloneNode(true);
container.removeAttribute("id");
container.removeAttribute("hidden");
container.getElementsByClassName("hiButton")[0].setAttribute("foo", "bar");
container.getElementsByClassName("explanation")[0].textContent = "Try this";
...
相关文章:
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 使用append时复制内容的DOM
- 创建一个HTML文件,该文件使用DOM在用户每次单击按钮时交换两段内容
- 使用车把仅为 JSON 中的特定键生成 DOM 内容
- jQuery Slider/Carousel 在 DOM 之后更新内容
- 无法从页面获取完整的 dom 内容
- 文本内容长度在 DOM 操作后不会更改
- 根据DOM,HTML元素的开始和结束标记之间的内容被称为属性.这个房产的名字是什么
- 将内容推送到浏览器..更改DOM
- 如何使用cheerio(类似jquery的选择器,但没有dom)生成javascript变量的内容
- AngularJS完成异步加载后将内容添加到DOM
- angular2:使用*ngIf构建svg图标不会给DOM添加任何内容
- 为插入到Shadow DOM中的内容设置样式
- 在页面内容完全加载后,使用jQuery在DOM中添加元素
- 如何设置新创建的 DOM 元素的 HTML 内容
- 允许内容可编辑在 dom 修改后撤消
- 加载特定元素的 AJAX 内容(将 DOM 元素传递给 AJAX 回调函数)
- 在我的情况下,如何将 html 内容添加到我的 dom 中
- 如何在不插入 dom 的情况下加载 mbox 内容
- PhantomJS - 从单击事件加载的内容不会加载到 DOM