2017-04-04 45 views
0

我有問題,因爲我的網站上存在JS代碼問題。我在Js文件中創建了7個彈出窗口,並將該文件附加到我的index.php文件中。當我使用所有的人只有最後一個工作當用戶在JavaScript中單擊外部時,可以使彈出框關閉

的index.php(片段)

      <div id="popupBox_1"> 
          <div class="popupBoxWrapper"> 
           <div class="popupBoxContent"> 
            <h3>Popup 1</h3> 
            <p>Obecnie przeglądasz okienko 1</p> 
           </div> 
          </div> 
         </div> 

         <div id="popupBox_2"> 
          <div class="popupBoxWrapper"> 
           <div class="popupBoxContent"> 
            <h3>Popup 2</h3> 
            <p>Obecnie przeglądasz okienko 2</p> 
           </div> 
          </div> 
         </div> 

         <div id="popupBox_3"> 
          <div class="popupBoxWrapper"> 
           <div class="popupBoxContent"> 
            <h3>Popup 3</h3> 
            <p>Obecnie przeglądasz okienko 3</p> 
           </div> 
          </div> 
         </div> 

popup.js(片段)

window.onclick = function(event) { 
     if (event.target == popupBox_1) { 
      popupBox_1.style.display = "none"; 
     } 
    } 

    window.onclick = function(event) { 
     if (event.target == popupBox_2) { 
      popupBox_2.style.display = "none"; 
     } 
    } 

    window.onclick = function(event) { 
     if (event.target == popupBox_3) { 
      popupBox_3.style.display = "none"; 
     } 
    } 

我做了這些彈出窗口和它們能否正常使用但我在js中創建了這些函數,因爲我想在用戶單擊外部彈出窗口時關閉它們。它只是爲最後我定義的(我的意思是popupBox_3)工作,我想讓他們都工作!

我需要你的幫助!

+0

你是不是綁定的其他聽衆,你只是改變''window''對象的''.onclick''成員兩次。 – Crowes

回答

2

您不能使用Node.onclick分配多個單擊事件處理程序,每次您都會覆蓋最後一個。您可能開關

window.addEventListener('click', function() { 
    if (event.target == popupBox_1) { 
     popupBox_1.style.display = "none"; 
    } 
}); 

window.addEventListener('click', function() { 
    if (event.target == popupBox_2) { 
     popupBox_2.style.display = "none"; 
    } 
}); 

...etc. 

但它將使很多更有意義,只是將所有三個條件成爲一個可點擊的處理程序:

window.onclick = function(event) { 
    if (event.target == popupBox_1) { 
     popupBox_1.style.display = "none"; 
    } 
    if (event.target == popupBox_2) { 
     popupBox_2.style.display = "none"; 
    } 
    if (event.target == popupBox_3) { 
     popupBox_3.style.display = "none"; 
    } 
} 
+0

好的,謝謝你,你能告訴我應該把這個功能嗎?我的意思是你在哪裏放置「//邏輯」?我開始編程,我是初學者 –

+0

嗨,Olivier,沒問題。我更新了我的答案,以獲得更具體的 –

+0

謝謝!這是工作! –

相關問題