1''*_*1'' 6 html javascript getelementbyid appendchild
我想创建一个select包含用户Facebook好友列表的元素(作为JSON对象获取).我硬编码<select id="friends"></select>到我的HTML,然后使用下面的JavaScript代码来解析JSON并插入每个朋友作为option该的select元素:
var msgContainer = document.createDocumentFragment();
for (var i = 0; i < response.data.length; i++) {
msgContainer.appendChild(document.createTextNode('<option value="'+response.data[i].id+'">'+response.data[i].name+'</option>'));
}
document.getElementById("friends").appendChild(msgContainer);
Run Code Online (Sandbox Code Playgroud)
这几乎可以工作,除了它插入<而>不是<和>.我该如何解决它,是否有更有效的方法使用纯Javascript(而不是JQuery)插入多个HTML元素?
小智 21
不确定为什么要创建一个文本节点,但似乎你想要创建option元素,所以你可以使用Option构造函数.
var msgContainer = document.createDocumentFragment();
for (var i = 0; i < response.data.length; i++) {
msgContainer.appendChild(new Option(response.data[i].name, response.data[i].id));
}
document.getElementById("friends").appendChild(msgContainer);
Run Code Online (Sandbox Code Playgroud)
或者您可以使用通用document.createElement().
var msgContainer = document.createDocumentFragment();
for (var i = 0; i < response.data.length; i++) {
var option = msgContainer.appendChild(document.createElement("option"));
option.text = response.data[i].name;
option.value = response.data[i].id;
}
document.getElementById("friends").appendChild(msgContainer);
Run Code Online (Sandbox Code Playgroud)
很高兴有一个辅助函数来同时创建元素和设置属性.
这是一个简单的例子:
function create(name, props) {
var el = document.createElement(name);
for (var p in props)
el[p] = props[p];
return el;
}
Run Code Online (Sandbox Code Playgroud)
它可以扩展到满足某些特定需求,但这适用于大多数情况.
你会这样使用它:
var msgContainer = document.createDocumentFragment();
for (var i = 0; i < response.data.length; i++) {
msgContainer.appendChild(create("option", {
text: response.data[i].name,
value: response.data[i].id
}));
}
document.getElementById("friends").appendChild(msgContainer);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14413 次 |
| 最近记录: |