0
我有以下代碼,檢查加載/調整大小的窗口和accroding變量MOBILE_WIDTH
它運行(或不)該函數。但是,它遵循一個明顯的問題,即重新啓動相同的函數時,它會重新執行每個初始化內容,例如.forEach方法,所以當我們在調整控制檯日誌的大小後單擊同一標題時,顯示我們多次單擊它。如何避免這種情況? 和codepen here。重新使用窗口調整大小/加載功能
let window_handlers = ['load', 'resize'];
let h1 = document.querySelectorAll('h1');
const MOBILE_WIDTH = 600;
window_handlers.map(handler => {
\t window.addEventListener(handler,()=>{
\t \t console.log(handler)
\t \t if(window.innerWidth <= MOBILE_WIDTH) { \t \t \t
\t \t \t test(true);
\t \t } else {
\t \t \t test(false);
\t \t }
\t })
})
let test = (statement) => {
\t if(statement) {
\t \t Array.from(h1).forEach(element => {
\t \t \t element.addEventListener('click',()=> {
\t \t \t \t console.log('clicked')
\t \t \t })
\t \t })
\t }
}
* {
box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
font-family: "Roboto", sans-serif;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
background-color: #FE5F55;
}
h1 {
font-size: 32px;
font-weight: bold;
cursor: pointer;
color: white;
margin-bottom: 10px;
-webkit-transition: .3s;
transition: .3s;
text-shadow: 2px 2px rgba(255, 255, 255, 0.4), 4px 4px rgba(0, 0, 0, 0.1);
}
h1:hover {
text-shadow: 1px 1px rgba(255, 255, 255, 0.4), 2px 2px rgba(0, 0, 0, 0.1);
}
<div class="headers">
\t <h1>Header 1</h1>
\t <h1>Header 2</h1>
</div>
點擊事件就是一個例子,代碼由更多的功能組成。我不希望它只取代點擊事件。 – NeedHate
這種方法對於你在那裏的每個聽衆都是一樣的 – gugateider
有兩個forEach方法,它們不是事件監聽器。 – NeedHate