
在模板中动态为 html 元素(如 )设置 name 属性时,必须将模板变量用双引号包裹,否则浏览器无法解析为有效属性值。
在模板中动态为 html 元素(如 `
在使用 Template Toolkit(或其他服务端模板引擎)生成 HTML 时,常需根据数据字段列表动态渲染表单或详情区域。例如,遍历 [‘id’,’type’,’updatedt’,’lastcheckdt’] 并为每个字段生成带对应 name 属性的
[% FOREACH field IN ['id','type','updatedt','lastcheckdt'] %] <div class="row col-md-3 col-sm-6"> <dl class="details-dl"> <label>[% field %]</label> <div class="details-dg"> <dd name="[% field %]" class="float-right">[% order.$field %]</dd> </div> </dl> </div> [% END %]
⚠️ 关键修正:原代码中
✅ 正确写法必须为:
<dd name="[% field %]" class="float-right">[% order.$field %]</dd>
这样模板渲染后将输出标准 HTML,例如:
立即学习“前端免费学习笔记(深入)”;
<dd name="updatedt" class="float-right">2024-03-15T08:22:10Z</dd>
随后即可在客户端 JavaScript 中安全操作:
// ✅ 正确选择(引号匹配,语义明确) let dt_formatted = convertDateFormat("[% order.updatedt %]"); $("[name='updatedt']").text(dt_formatted); // 注意:dd 是非表单元素,用 .text() 而非 .val() // 若需批量处理所有动态字段,可统一绑定: $("[name]").each(function() { const name = $(this).attr("name"); if (name === "updatedt" || name === "lastcheckdt") { const rawValue = $(this).text(); $(this).text(convertDateFormat(rawValue)); } });
? 注意事项: