点击按钮替换输入框指定单词的JS函数不生效如何解决?
问题原因
- 表单内容读写逻辑错误:常规的
<input>、<textarea>输入框的用户输入内容存储在value属性中,你使用的innerHTML是用来读取元素内部的HTML节点内容,无法拿到用户输入的文本,写入时也无法把内容同步到输入框展示。 - 字符串替换规则不符合需求:当前使用的
replace("hi", "yo")仅会替换第一个匹配到的小写hi,且替换结果为小写yo,既无法处理多个hi的场景,也不符合你需要的首字母大写Yo的效果,同时没有加单词边界限制,会误替换hint、hill这类单词中包含的hi字符。 - 存在语法冗余:代码末尾多写了一个分号,虽不影响运行但属于不规范写法。
解决方案
根据你的需求修正后的代码如下:
function changeWord() { const inputBox = document.getElementById('inputBox'); // 用value读写输入框内容 let inputContent = inputBox.value; // 全局匹配独立的hi单词,替换为首字母大写的Yo,加i可适配匹配Hi、HI等大小写组合 inputContent = inputContent.replace(/\bhi\b/gi, () => 'Yo'); inputBox.value = inputContent; }
如果你使用的是设置了contenteditable="true"的div作为输入容器,保留innerHTML读写即可,替换逻辑和上面一致。
内容的提问来源于stack exchange,提问作者Bill Colins
相关产品推荐
相关产品推荐

