使用EJS或jQuery设置HTML标签的属性

20

在我的Express服务器上,我正在呈现一张包含数据的页面:

app.get('/people/:personID', function (req, res) {
  res.render("people/profile", {person: req.person });
});
在我的profile.ejs文件中,我可以像这样在ejs标签中访问数据:<p><%= person.name %></p> 但是我不知道如何将HTML标记的属性更改为存储在此对象中的值。
这样是不起作用的:<img id="my_img" src=<%= person.picture %> alt=""> 或者这样:$("#my_img").attr("src", <%= person.picture %>); 此外,如果有更好的方法将此文档传递到HTML页面并访问它,我乐意倾听(或者说是看)。谢谢。

1
也许你应该添加引号:<img id="my_img" src="<%= person.picture %>" alt=""> - zishe
1
这个可行!我没有尝试过那个。我以为它会被视为字面字符串。 - Elementary
1个回答

36

你必须将字符串值用引号括起来。

在html中:

<img id="my_img" src="<%= person.picture %>" alt="">

在jQuery中:

$("#my_img").attr("src", "<%= person.picture %>");

2
如果您想填充一个JS调用,例如onclick,但是您的数据可能包含单引号,您可以使用通过例如onclick="someCall(this)" data-something="<%= someValue %>"传递的data属性,在接收函数中可以通过passedThisElement.dataset.something读取。 - Philipp Lenssen
@PhilippLenssen 我在这里也做了同样的事情,但它不起作用 https://stackoverflow.com/questions/67659225/displaying-default-value-in-html-form-from-mysql-using-node-js - mr.loop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接