2014-01-22 154 views
0

我今天在玩一些普通的香草JS,並對onclick事件有疑問。無法設置屬性onclick null

可能是最好的只顯示代碼:

function _(x) { 
    return document.querySelector(x); 
} 
function toggleSlide(el, maxH) { 
    var target = _(el); 
    if(target.style.height == null || target.style.height == maxH+"px") { 
     target.style.transition = "height 0.3s linear 0s"; 
     target.style.height = "0px"; 
    }else { 
     target.style.transition = "height 0.3s linear 0s"; 
     target.style.height = maxH+"px"; 
    } 
} 

一切正常,如果我的onclick事件添加到該按鈕,如:

<button id="menu-btn" onclick="toggleSlide('#menu', 280)">Toggle</button> 

但我得到的錯誤,

「connot set property'onclick'of null」

當我嘗試這樣的:

_('#menu-btn').onclick = function() { 
    toggleSlide('#menu', 280) 
} 

如何我可以使用切換功能,無需添加HTML中的onclick

+0

我想如果你用螢火蟲或類似的東西進行調試,它可能會給你答案。你的js是否在運行? – Huangism

+1

如果腳本包含在關閉主體標記之前,則不應該出現此錯誤。 – Tyblitz

回答

1

您試圖在按鈕存在之前添加偵聽器。將有問題的代碼放在按鈕後面的<script>onload(首選,請參閱下面的代碼)中。

window.onload = function() { 
    _("#menu").onclick = function() { 
     toggleSlide('#menu', 280); 
    }; 
}; 

編輯:注意,如果你有其中多個它們應該被放在同一個onload功能,或者最後一個將覆蓋之前的那些。

相關問題