Uncaught TypeError: Cannot set property 'onclick' of null;
一句話“確保click事件的dom節點渲染先於JS執行。”解決。
自己寫的一段原生JS的click事件,JS代碼是寫在首頁的
<script type="text/javascript"> var all_features = document.getElementById("all_features"); var all_features_down = document.getElementById("all_features_down"); all_features.onclick=function () { var price_content = document.getElementsByClassName("price_content"); for (var i = 0; i < price_content.length; i++) { price_content[i].style.display = "none"; } all_features.style.display = "none"; all_features_down.style.display = "block"; }; all_features_down.onclick=function () { var price_content_down = document.getElementsByClassName("price_content"); for (var i = 0; i < price_content_down.length; i++) { price_content_down[i].style.display = "block"; } all_features.style.display = "block"; all_features_down.style.display = "none"; }; </script>
代碼沒什麼看的,關鍵的是我點擊的dom沒有在首頁,還木有渲染出來,所以報了以上錯誤(雖說是錯誤,但對使用者是無感的,沒有任何影響,使用者點擊到了那個頁面,照樣是可以正常操作的)。
不過程式員的潔癖(no error):
改成 了
function trigger_switch_up() { var price_content = document.getElementsByClassName("price_content"); for (var i = 0; i < price_content.length; i++) { price_content[i].style.display = "none"; } all_features.style.display = "none"; all_features_down.style.display = "block"; }; function () trigger_switch_down{ var price_content_down = document.getElementsByClassName("price_content"); for (var i = 0; i < price_content_down.length; i++) { price_content_down[i].style.display = "block"; } all_features.style.display = "block"; all_features_down.style.display = "none"; };
<div onClick="trigger_switch_down()">Some Content</div>