猿问

我正在尝试编写一个函数隐藏一个元素,显示另一个

我正在尝试编写一个函数来重现隐藏一个元素并显示另一个元素的动作。我知道 JQuery 中有一些东西可以解决这个问题,但我还没有,所以想用简单的 js 解决它。


const changeDisplay = (elm1, elm2) => {

     let E1 = document.getElementById('elm1').style.display = 'none'

     let E2 = document.getElementById('elm2').style.display = 'block'

     return elm1.addEventListener('click', E1) &&

     elm1.addEventListener('click', E2)

   }


   changeDisplay('not', 'ok')

TypeError: document.getElementById(...) is null script.js:6:21


慕娘9325324
浏览 223回答 3
3回答

白板的微信

尝试使用如下示例的代码添加或删除 CSS 类,这些类将根据需要隐藏或显示您的元素。window.onload = function() {&nbsp;var items = document.querySelectorAll('.item');&nbsp;for (var i=0; i < items.length; i++ ){&nbsp; items[i].addEventListener('click', function(event) {&nbsp; &nbsp; for (var i=0; i < items.length; i++ ){&nbsp; &nbsp; &nbsp; items[i].classList.remove("hidden");&nbsp; &nbsp; }&nbsp; &nbsp; event.target.classList.add("hidden");&nbsp; &nbsp;});&nbsp;}}.hidden { display: none; }.item { cursor: pointer; }<ul>&nbsp; <li class="item">Item 1</li>&nbsp; <li class="item hidden" >Item 2</li></ul>

千万里不及你

在您的代码段中,您尝试访问elm1和elm2作为字符串,因此您应该删除'. 您的最后一行 addEventListener 可疑,我不明白您要做什么。在 JS 中处理样式更改时的最佳实践是预先创建 CSS 类并使用 JS 动态更改该类。类似的东西:const changeDisplay = (elm1, elm2) => {&nbsp; &nbsp; &nbsp;const E1 = document.getElementById(elm1);&nbsp; &nbsp; &nbsp;const E2 = document.getElementById(elm2);&nbsp; &nbsp; &nbsp;E1.className = 'display_none';&nbsp; &nbsp; &nbsp;E2.className = 'display_block';&nbsp; &nbsp; &nbsp;E1.addEventListener('click', /*FUNCTION*/);&nbsp; &nbsp; &nbsp;E2.addEventListener('click', /*FUNCTION*/);&nbsp; &nbsp;}&nbsp; &nbsp;changeDisplay('not', 'ok')
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答