我有一段时间没有编程,如果我在这里说的话似乎很愚蠢,那么我就裸露了。)
我正在寻找的是一个函数或一段代码,可以帮助我将数组的结果转储到HTML DIV中。我知道有不同的方法,但这些都需要遍历数组。我正在寻找的更像是一个映射工具。例如:
让我们假设我的javascript中有以下数组:
var myarray = [];
myarray['name'] = 'value1';
myarray['lastname'] = 'value2';
myarray['address'] = 'value3';
我接下来要做的是以某种方式将数组中的每个值与HTML DIV中的等价物相关联。例如:
<div id="name"></div>
<div id="lastname"></div>
<div id="address"></div>
或者甚至更好,我希望能够在我的HTML中创建一个表,可以使用此信息获取,而无需使用DIV。类似的东西:
<table width="277" height="146" border="1">
<tr>
<td width="97">Name</td>
<td width="87">{name}</td>
</tr>
<tr>
<td>Lastname</td>
<td>{lastname}</td>
</tr>
<tr>
<td>Address</td>
<td>{address}</td>
</tr>
</table>
所以我的想法是,当我在Javascript中获取值时(通过jquery),我可以将数组的整个内容写入HTML表,而不必迭代遍历数组的每个值。
任何想法,如果有什么可以帮助我实现我的目标?
非常感谢!
答案 0 :(得分:2)
这是一个非常简单的模板系统。首先为模板创建一个脚本标记:
<script id="template" type="text/html">
<table width="277" height="146" border="1">
<tr>
<td width="97">Name</td>
<td width="87">{name}</td>
</tr>
<tr>
<td>Lastname</td>
<td>{lastname}</td>
</tr>
<tr>
<td>Address</td>
<td>{address}</td>
</tr>
</table>
</script>
然后,您可以根据您的数据(作为对象)使用此小函数渲染模板:
// An object, not an array
var data = {
name: 'value1',
lastname: 'value2',
address: 'value3'
};
// Very basic templating
function render(template, data) {
var patt = /\{([^}]+)\}/g; // matches {key}
return template.replace(patt, function(_, key) {
return data[key];
});
}
// Grab html from template
var template = $('#template').html();
// Generate html given the data and append to body
$('body').append(render(template, data));
演示: http://jsbin.com/ibeBIxO/1/edit
如果您想要更复杂的东西,请查看Underscore templates。
答案 1 :(得分:0)
听起来你正在寻找一个可以动态地将HTML元素添加到DOM(文档对象模型)的javascript框架。
在这种特殊情况下,遍历所有数组元素并没有那么多工作。
以下是一些可以帮助您入门的参考资料:
答案 2 :(得分:0)
您可以使用JSON,例如:
var myarray = {
name: 'value1',
lastname: 'value2',
address: 'value3'
}
var tbl = $(table);
$.each(myarray, function(i, v){
tbl.append('<tr><td>'+i+'</td><td>'+v+'</td></tr>');
});
然后使用jQuery的.css()
方法添加您的样式。