如何通过JS修改contenteditable为plaintext-only的div元素内容
问题原因
- 原生HTML中
<input>属于空元素(Void Element),本身不支持内嵌子节点,也无法通过innerHTML属性修改内部内容。你看到的嵌套在<input>内部的div是前端框架/自定义组件库渲染的特殊结构,直接操作<input>的innerHTML属性不会生效。 - 你原有代码的写法是直接覆盖整个
<input>的内部HTML,即使生效也会删除原本存在的pseudo="placeholder"属性的div节点,和你的修改需求不符。
解决方案
你只需要定位到带contenteditable="plaintext-only"属性的目标div,直接修改它的文本内容即可,推荐使用textContent而非innerHTML,避免XSS安全风险:
const editableDiv = document.querySelector('#prezzo-da-e div[contenteditable="plaintext-only"]'); // 先判断节点存在再操作,避免空指针报错 if (editableDiv) { editableDiv.textContent = '1'; }
如果该DOM结构是页面加载完成后异步渲染生成的,需要等节点挂载完成后再执行代码,可以包裹在DOM加载完成的监听事件中:
document.addEventListener('DOMContentLoaded', () => { const editableDiv = document.querySelector('#prezzo-da-e div[contenteditable="plaintext-only"]'); if (editableDiv) { editableDiv.textContent = '1'; } });
内容的提问来源于stack exchange,提问作者Alex1919
相关产品推荐
相关产品推荐

