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 everytime
I%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] });
  }