Home > Net >  Unable to print array in list form in html template variable received from javascript file
Unable to print array in list form in html template variable received from javascript file

Time:12-10

I need to show which courses user have bought and also to show them in a receipt when user receives an email. I have a node service to send emails which contain different email template in separate files and I send all the values from js file to html template, populate data in template and then send email.

Here is the code related to js file

  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);

Here is the html template

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>

I have tried to write this script code with different changes, but it does not display this array. I have used split function because this COURSES variable is received here as string.

CodePudding user response:

You shouldn't rely on Javascript code to be executed or not in the email for something as trivial as this, better to inject directly the <li> elements in your template:

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);

with a simpler template like this:

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