无法在从javascript文件接收的html模板变量中以列表形式打印数组



我需要显示用户购买了哪些课程,并在用户收到电子邮件时在收据中显示它们。我有一个节点服务来发送电子邮件,其中包含不同的电子邮件模板在单独的文件,我从js文件发送到html模板的所有值,在模板中填充数据,然后发送电子邮件。

下面是与js文件 相关的代码
link = req.body.origin + "/contact-us";
linkContent = "Contact Us";
msg = msg.replace("CONTENT", " " + emailTemplate.getResetSuccessTemplate);
var courses = ["Course1", "Course2", "Course3", "Course4"];
msg = msg.replace("COURSES", courses);

这是html模板

let resetPasswordSuccess = `
<ul id="myList" style="font-weight: 300;font-size: 16px;color: #4A4A4A;"></ul>
<script>
var list = document.getElementById("myList");
COURSES.split(',').forEach((item) => {
let li = document.createElement("li");
li.innerText = item;
list.appendChild(li);
});
</script>

我试着用不同的变化来写这个脚本代码,但它不显示这个数组。我使用了拆分函数,因为这个COURSES变量在这里是作为字符串接收的。

你不应该依赖Javascript代码在邮件中执行或不执行像这样琐碎的事情,最好直接在模板中注入<li>元素:

link = req.body.origin + "/contact-us";
linkContent = "Contact Us";
msg = msg.replace("CONTENT", " " + emailTemplate.getResetSuccessTemplate);
var courses = ["Course1", "Course2", "Course3", "Course4"];
var i, l = courses.length, str = '';
for(i = 0; i < l; i++){
str += '<li>' + courses[i] + '</li>';
}
msg = msg.replace("COURSES", str);

用一个更简单的模板:

let resetPasswordSuccess = `
<ul id="myList" style="font-weight: 300;font-size: 16px;color: #4A4A4A;">COURSES</ul>
`;

相关内容

  • 没有找到相关文章

最新更新