Javascript 如何基于“模数”操作符将对象特性指定给动态元素
我创建了一个小模板,用于保存和Javascript 如何基于“模数”操作符将对象特性指定给动态元素,javascript,jquery,object,templating,Javascript,Jquery,Object,Templating,我创建了一个小模板,用于保存和&,我创建了一个循环,用于添加.inner everytimeI%2===0,我想做的是分割输出的数据,以遵循相同的规则,这样当i%2==0add.inner时,还可以分割对象属性,使每个.inner都显示2个模板化的对象属性。有人能就如何实现这一目标提出建议吗?而且我的模板项目似乎返回未定义 此处演示模板化项目似乎返回未定义的: var temp = template.replace(/name/ig, data.name) .replace(/age/i
&
,我创建了一个循环,用于添加.inner everytimeI%2===0
,我想做的是分割输出的数据,以遵循相同的规则,这样当i%2==0
add.inner时,还可以分割对象属性,使每个.inner都显示2个模板化的对象属性。有人能就如何实现这一目标提出建议吗?而且我的模板项目似乎返回未定义
此处演示模板化项目似乎返回未定义的:
var temp = template.replace(/name/ig, data.name)
.replace(/age/ig, data.age);
由于它们是一个数组,因此应如下所示
var temp = template.replace(/name/ig, data[i].name)
.replace(/age/ig, data[i].age);
我认为Songlessbird的回答足够清楚,但只是给出一个恰当的答案,而不是
var temp = template.replace(/\{\{name\}\}/ig, data.name)
.replace(/\{\{age\}\}/ig, data.age);
你需要有
var temp = template.replace(/\{\{name\}\}/ig, data[i].name)
.replace(/\{\{age\}\}/ig, data[i].age);
你可以在这里看到一个例子
除此之外,在模式上,“模板”不应该放在脚本标记中,因为它不是脚本。您的代码可以在许多方面得到改进。此处的选择器:
$('.inner').append(temp);
实际上应该是$(“.inner:last”)
,否则它会影响到目前为止创建的所有“.inner”对象。更好的方法是将新创建的div保存在变量中:
inner = $('<div class="inner"></div>').appendTo($('#ctn'));
另一个改进是自动化模板渲染。考虑下面的函数:它从对象中填充任意{{标签}}:
function render(template, values) {
return template.replace(
/{{(\w+)}}/g,
function($0, $1) { return values[$1] });
}
完整示例:
. 如果您有任何问题,请告诉我们。您应该使用数据[i]。姓名、年龄等。因为您正在数组中循环。嘿,这非常有用,谢谢,不过还有一个问题。如何确保将对象0+1添加到.inner(第一个)和2+3添加到.inner(第二个)?目前,0,1,2,3在第一位,然后2+3在第二位?这可能是你在这种情况下想要的
function render(template, values) {
return template.replace(
/{{(\w+)}}/g,
function($0, $1) { return values[$1] });
}