
在模板中动态为 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));
}
});? 注意事项:
- name 属性对
- 标签虽非语义必需,但作为自定义标识符完全合法,可用于 JS 选择与操作;
- 对非表单元素(如
- 、
),请使用 .text() 或 .html() 修改内容,而非 .val()(仅适用于 / - 、











