如何实现点击英文单词切换韩语翻译的显示与隐藏?
如何实现点击英文单词切换韩语翻译的显示与隐藏?
嘿,我来帮你搞定这个问题!你的思路其实是对的,只是几个小细节没处理好,咱们一步步改就行,完全不用复杂的语法~
先说说你代码里的几个小问题:
- 你用
this.closest("span")找错元素啦——.english本身是<li>标签,里面的韩语翻译是它的子元素<span class="answer">,所以应该用this.querySelector(".answer")来获取对应的翻译元素。 classlist要写成驼峰式的classList,JS里的属性名是区分大小写的哦。- 调用
toggle()的时候,直接传类名"hideMe"就好,不用加.,因为这里要操作的是类名本身,不是CSS选择器。
下面是修正后的完整代码,你直接替换原来的代码就能用啦:
HTML
<div class="Words-container"> <div id="Verbs"> <div> <h2 class="Word-title">Verbs</h2> </div> <div> <ul id="List-words"> <li class="english">To fall-- <span class="answer hideMe"> 넘어다 </span></li> <li class="english">To be young-- <span class="answer hideMe"> 젊다 </span></li> <li class="english">To be anxious-- <span class="answer hideMe"> 불안하다 </span></li> <li class="english">To be sensitive-- <span class="answer hideMe"> 예민하다 </span></li> <li class="english">To translate-- <span class="answer hideMe"> 번역하다 </span></li> <li class="english">To give an example--<span class="answer hideMe"> 예를 들어 주다 </span></li> <li class="english">To be perfect-- <span class="answer hideMe"> 완벽하다 </span></li> <li class="english">To be efficient-- <span class="answer hideMe"> 효율적이다 </span></li> </ul> </div> </div> </div>
CSS
.hideMe { visibility: hidden; }
JavaScript
// 给所有英文单词添加点击事件监听 const englishWords = document.querySelectorAll(".english"); for (let x = 0; x < englishWords.length; x++) { englishWords[x].addEventListener("click", function() { // 找到当前点击的li里的韩语翻译元素 const koreanAnswer = this.querySelector(".answer"); // 切换hideMe类来控制显示/隐藏 koreanAnswer.classList.toggle("hideMe"); }); }
我还额外优化了一点:把document.querySelectorAll(".english")的结果存到变量englishWords里,不用每次循环都重新查询DOM,这样代码运行起来更高效哦~
备注:内容来源于stack exchange,提问作者Reg




