Cannot set property 'onclick' of null報錯
阿新 • • 發佈:2018-11-11
經常幾個頁面使用公共js檔案, 原來遇到也沒留意, 原來是本頁面執行的時候, 其他頁面也在執行並賦予id於onclick.
因為頁面是正常情況下是不存在null和undefined
if(null){ console.log(1); } else { console.log(2); }//輸出2 if(undefined){ console.log(3); } else { console.log(4); }//輸出4
所以解決的方法:
①最常用的方法, js寫帶有函式名的函式a, 在頁面標籤裡使用時間<div onclick="a()"></div>
②每個點選頁面之前寫上判斷,判斷是否存在,如下
var tan = document.getElementById("tan"); var argeeSure = document.getElementById("argeeSure"); var close = document.getElementById("off"); var sure = document.getElementById("sure"); var body = document.getElementsByTagName("body")[0]; // console.log(body) if(argeeSure) argeeSure.onclick= function () { tan.style.display = "block"; body.style.height = "100%"; body.style.overflow = "hidden"; } if(close) close.onclick = function () { tan.style.display = "none"; body.style.height = "auto"; body.style.overflow = "auto"; } if(sure) sure.onclick = function () { tan.style.display= "none"; body.style.height = "auto"; body.style.overflow = "auto"; }
其中if(argeeSure)是簡寫形式, 只作用其簡寫下面兩行, 相當於
if(argeeSure !=null && argeeSure != undefined){ argeeSure.onclick = function () { tan.style.display = "block"; body.style.height = "100%"; body.style.overflow = "hidden"; } }