我的情况是我有一个JS文件,该文件正在两个HTML页面上使用。一个有一个button
,id="a"
另一个没有。id="a"
为此,我已经附加了一个事件。
document.getElementbyId("a").onclick = function () { .. }
我的问题是,当我运行不button
带with的第二个文件时id="a"
,它引发了错误
TypeError: document.getElementbyId(...) is null
这会导致一些意外行为!有什么方法可以仅使用一个JS文件,还是应该为每个html页面分离JS文件?
我在这里阅读有关StackOverflow的问题,这是关于为什么选择器无效时jQuery不会引发错误的问题。我需要香草JavaScript具有相同或相似的功能。
简单的解决方法是添加检查:
if (document.getElementById("a") !== null) {
document.getElementById("a").onclick = function () /* .. */ };
}
jQuery永远不会因缺少元素而中断,只是默默地失败。您可以争论这是否好。
jQuery使用的技巧是它将始终返回某些内容。$("#id")
将返回一个jQuery包装器。该包装器具有.on
和.load
和的功能.html
。选择器可以匹配一个,多个或没有任何元素。对于包装器,匹配多少个元素无关紧要。
它是这样的:
var elem = get_element("a");
elem.onclick(callback);
function get_element(id) {
var elem = document.getElementById(id);
return { // return a wrapper
onclick: function (callback) {
if (elem !== null) {
elem.onclick = callback;
} else {
// silently fail
}
}
};
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句