鍍金池/ 問答/HTML5  HTML/ 如何實(shí)現(xiàn)點(diǎn)擊頁(yè)面中的一個(gè)按鈕相應(yīng)位置的div顯示隱藏?

如何實(shí)現(xiàn)點(diǎn)擊頁(yè)面中的一個(gè)按鈕相應(yīng)位置的div顯示隱藏?

頁(yè)面中有多個(gè)按鈕,分別對(duì)應(yīng)頁(yè)面中的多個(gè)div,點(diǎn)擊其中一個(gè)按鈕,相應(yīng)div隱藏顯示。

如果對(duì)每個(gè)按鈕和div設(shè)置id的話可以做到,但是有點(diǎn)太傻了 ,應(yīng)該有簡(jiǎn)單方法的,例如用this?或者其他方法?

希望找到通過(guò)原生js解決的方法,jq幾乎還沒學(xué)呢···

我想實(shí)現(xiàn)附圖中的功能,附圖中只有一個(gè)按鈕和div,我想要多個(gè)按鈕div都可以做到那個(gè)樣子的。
我只給需要實(shí)現(xiàn)這個(gè)功能的div設(shè)置了class,沒有單獨(dú)設(shè)置id,希望有能不設(shè)置id就可以實(shí)現(xiàn)的方法···
圖片描述

謝謝了···

補(bǔ)充:第一個(gè)答案可以簡(jiǎn)單實(shí)現(xiàn),但是有一些問題,例如刪除第一個(gè)div后,后面的顯示隱藏會(huì)出現(xiàn)問題,如下面圖片的那樣。圖片描述

回答
編輯回答
萌面人

這個(gè)可以通過(guò)給按鈕點(diǎn)擊事件傳參來(lái)完成,下面是一個(gè)小例子
html

<div id="wrap">
    <button>點(diǎn)擊1</button>
    <div class="one">1</div>
    <button>點(diǎn)擊2</button>
    <div class="one">2</div>
    <button>點(diǎn)擊3</button>
    <div class="one">3</div>
    <button>點(diǎn)擊4</button>
    <div class="one">4</div>
    <button>點(diǎn)擊5</button>
    <div class="one">5</div>
</div>

css

.one{
    width: 100px;
    height: 20px;
    background-color: red;
}

js

var wrap = document.getElementById('wrap');
  console.log(wrap);
  var oButton = wrap.getElementsByTagName('button');
  var num = oButton.length;
  for(let i=0; i<num; i++){
    // oButton[i].setAttribute('onclick' ,`change(${i},this)`);
    oButton[i].addEventListener('click',function(){
      var oDiv = document.getElementsByClassName('one')
      if (oDiv[i].style.opacity == 1 || (oDiv[i].style.opacity == '')) {
        oDiv[i].style.opacity = 0;
      } else {
        oDiv[i].style.opacity = 1;
      }
    })
  }

--------------------補(bǔ)充:---------------
js中用opacity是為了不讓隱藏的div破壞頁(yè)面結(jié)構(gòu),如果用display的話,容易影響頁(yè)面的結(jié)構(gòu)。當(dāng)然這視情況而定。
if語(yǔ)句判斷是否為''是因?yàn)樵谝婚_始,opacity='',如果不加,一開始要點(diǎn)擊兩次,div才會(huì)隱藏。
--------------------補(bǔ)充:---------------
修改了一下js和html。每次對(duì)div和button的刪除和增加,只要是成對(duì)的,那就都可以了。

2018年4月1日 09:16