如何在Express(Node.js)中渲染MySQL富文本?onload失效问题求解
问题解答
当然可以用Express(Node.js)把MySQL里的富文本内容渲染到HTML页面,你的问题出在**<td>元素不支持onload事件**——这个事件仅在<body>、<img>、<script>等少数元素上触发,绑定在td上自然没效果;而onclick是所有元素都支持的事件,所以能正常工作。
给你两种解决办法:
方法一:直接在模板中渲染HTML(最优解)
你现在用<%= item.description %>会自动转义HTML内容,导致富文本变成纯文本显示。换成模板引擎的不转义输出语法即可(以EJS为例,其他引擎类似,比如Pug用!{}):
<td data-label="description"><%- item.description %></td>
这样页面加载时会直接把MySQL里的HTML元素渲染到页面,不需要额外JS处理。
方法二:页面加载完成后批量处理元素
如果一定要用JS处理,不要绑定元素的onload,而是在整个页面DOM加载完成后统一处理目标元素:
<script> window.addEventListener('DOMContentLoaded', function() { // 找到所有需要处理的td元素 const descCells = document.querySelectorAll('td[data-label="description"]'); descCells.forEach(cell => { cell.innerHTML = cell.innerText; }); }); </script>
对应的td标签不需要绑定任何事件:
<td data-label="description"><%= item.description %></td>
内容的提问来源于stack exchange,提问作者J-J
相关产品推荐
相关产品推荐

