pap*_*iry 2 html javascript iteration
所以我在屏幕上有一个菜单,其中有几个相同的盒子 - 唯一的区别是盒子的编号不同.
<div id="1">
<select name="option1">
<option value="1">foo</option>
<option value="2">bar</option>
</select>
</div>
<div id="2">
<select name="option2">
<option value="1">foo</option>
<option value="2">bar</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
每个div都是900行代码,每当我改变时我都要改变每个div - 写一个for循环并使用document.write完成只写一次div(并减小文件大小)的最佳方法?
var divCode
for (var i=1; i < 7; i++){
divCode +='
<div id="'+i+'">
<select name="option'+i+'">
<option value="1">foo</option>
<option value="2">bar</option>
</select>
</div>'
}
document.write('divCode')
Run Code Online (Sandbox Code Playgroud)
或者javascript中有更好的方法吗?我想有一个,考虑到编写900行连接字符串代码并不好玩(或有效).
您可以使用像小胡子这样的JavaScript模板引擎来保持代码的简单性和可维护性.
这里有一个例子(除了胡子之外还使用jQuery):
HTML:
<script type="text/template" id="template_divs">
{{#divs}}
<div id="{{id}}">
Hallo my name is {{name}}!
</div>
{{/divs}}
</script>
<div id="container">
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
var someDivs = {divs: [{id: 1, name: "Tom"},{id: 2, name: "Bob"},{id: 3, name: "Earl"}]};
var parsed = Mustache.render($('#template_divs').html(), someDivs);
$('#container').html(parsed);
Run Code Online (Sandbox Code Playgroud)
我创建了一个小提琴来为你演示它:http://jsfiddle.net/2gYCz/