form提交跳转后edit_article页调用getElementById返回null问题求解
问题原因
formaction 属性仅用于指定表单提交的目标接口/页面地址,不会将原页面的DOM元素同步到跳转后的新页面。你点击提交按钮后,后台管理页面销毁、跳转到edit_article.html,新页面本身不存在id="alert_ortho"的文本域元素,所以getElementById必然返回null,和你加的ready等待逻辑没有关系。
解决方法
你可以根据需求选以下任意一种方案实现:
方案1:后端渲染(推荐)
Spip本身支持直接读取POST请求的参数,你可以直接在edit_article.html模板中输出提交上来的alert_message内容,不需要用JS额外处理:
<div style="padding:10px; margin:10px; border: 3px solid #A0A0A0; text-align: center;background: #FFFF00;"> <span style="color:#FF0000;"><strong> #ENV{alert_message} </strong></span> </div>
方案2:前端本地存储
如果需要前端侧处理数据,可以在表单提交前把告警内容存储到本地,跳转后再读取:
- 先给后台管理页的提交按钮添加点击事件,存储内容:
document.querySelector('button[formaction="/edit_article.html"]').addEventListener('click', () => { localStorage.setItem('alert_msg', document.getElementById('alert_ortho').value); });
- 在
edit_article.html中读取存储的内容:
$(document).ready(function() { const msg_al = localStorage.getItem('alert_msg'); console.log(msg_al); // 后续业务逻辑... // 不需要留存的话可以用完删除 // localStorage.removeItem('alert_msg'); });
内容的提问来源于stack exchange,提问作者bananoob
相关产品推荐
相关产品推荐

