繁体   English   中英

我应该怎样包装document.getElementById以便在找不到ID时不会引发TypeError?

[英]What do I wrap a document.getElementById so as not to throw a TypeError when ID can't be found?

我正在使用Hammer.js库( http://hammerjs.github.io/ )在原始javascript环境中启用触摸手势。 包含库之后,我将在画廊页面上进行通话。 如果在页面上找不到ID幻灯片,则呼叫失败。 产生的TypeError还会阻止执行该站点的其他js。 我真的很陌生,但是从阅读开始,我认为我需要将此代码包装在测试中,这样如果id slide不存在,它将不会运行。 知道如何执行此操作将帮助我解决其他ID和库的其他问题。

所以在Hammer.js代码之后,我有自己的代码:

var slide = document.getElementById('slide');
var mc = new Hammer(slide);
mc.on("swipeleft", function(ev) {
var url = document.querySelector('a.next').getAttribute('href');
if (url) {
    window.location = url;
}
});

mc.on("swiperight", function(ev) {
var url = document.querySelector('a.prev').getAttribute('href');
if (url) {
    window.location = url;
}
});

如果页面不包含id幻灯片,如何防止执行此代码? (当我说它不包含它时,我的意思是它不会在该页面上存在,不是说DOM还没有准备好。)

谢谢。

只需测试一下:

var slide = document.getElementById('slide');

if( slide ){
  // .. your code
}

如果slide虚假,则结束周围的函数执行:

var slide = document.getElementById('slide');    
if (!slide) return;
//... The rest of your code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM