如何实现点击文本时将其替换为数组中的随机元素?
功能修复方案
你的代码存在两个核心问题,修改后即可实现预期效果:
- 事件名拼写错误:DOM事件名大小写敏感,你调用
addEventListener时传入的"Click"首字母大写不符合规范,需要改为全小写的"click" - 替换逻辑错误:当前
changeWord函数会修改所有带hare类的元素文本,不符合「仅替换被点击的对应文本」的需求,你可以直接通过this关键字获取触发点击事件的当前元素,单独修改它的内容即可
修复后的完整代码如下:
<script> // 随机词数组提到函数外,避免每次点击重复初始化 const wordList = ["Rabbit", "Snake", "Human"]; const hareElements = document.getElementsByClassName("hare"); for (let i = 0; i < hareElements.length; i++) { // 事件名改为小写click hareElements[i].addEventListener("click", changeWord); } function changeWord() { const randomWord = wordList[Math.floor(Math.random() * wordList.length)]; // 直接修改当前被点击的元素内容 this.innerHTML = randomWord; } </script>
如果你需要保留原文本的其他属性、只替换文字内容,也可以把innerHTML换成textContent,避免潜在的XSS风险。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

