Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在找不到在getElementById之后搜索的函数时,如何防止js函数运行?_Javascript - Fatal编程技术网

Javascript 在找不到在getElementById之后搜索的函数时,如何防止js函数运行?

Javascript 在找不到在getElementById之后搜索的函数时,如何防止js函数运行?,javascript,Javascript,我有一个脚本,它在一个水平div上添加了一个顶部滚动条。该脚本必须将它添加到最多10个不同的div上。(从mainplh_BoautodStable1_divScrollContainer到mainplh_BoautodStable1_divScrollContainer) 为此,我调用脚本10次(以下是前3个示例)。但是,如果其中一个div丢失,则会中断脚本 doublescroll(document.getElementById('mainplh_boAutoOddsTable1_divSc

我有一个脚本,它在一个水平div上添加了一个顶部滚动条。该脚本必须将它添加到最多10个不同的div上。(从mainplh_BoautodStable1_divScrollContainer到mainplh_BoautodStable1_divScrollContainer)

为此,我调用脚本10次(以下是前3个示例)。但是,如果其中一个div丢失,则会中断脚本

doublescroll(document.getElementById('mainplh_boAutoOddsTable1_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable2_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable3_divScrollContainer'));
例如,如果找不到mainplh_boautoodstable1_divScrollContainer,它会破坏我的Javascript。我怎样才能解决这个问题?例如,如果无法找到div元素,是否阻止函数运行

错误消息:

Uncaught TypeError: Cannot read property 'scrollWidth' of null 
这是完整的javascript:

function doublescroll(element) {
        var scrollbar= document.createElement('div');
        scrollbar.appendChild(document.createElement('div'));
        scrollbar.style.overflow= 'auto';
        scrollbar.style.overflowY= 'hidden';
        scrollbar.style.width= '506px';
        scrollbar.firstChild.style.width= element.scrollWidth+'px';
        scrollbar.firstChild.style.paddingTop= '1px';
        scrollbar.firstChild.appendChild(document.createTextNode('\xA0'));
        scrollbar.onscroll= function() {
            element.scrollLeft= scrollbar.scrollLeft;
        };
        element.onscroll= function() {
            scrollbar.scrollLeft= element.scrollLeft;
        };
        element.parentNode.insertBefore(scrollbar, element);
    }

doublescroll(document.getElementById('mainplh_boAutoOddsTable1_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable2_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable3_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable4_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable5_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable6_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable7_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable8_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable9_divScrollContainer'));
doublescroll(document.getElementById('mainplh_boAutoOddsTable10_divScrollContainer'));

检查函数中是否存在
元素

function doublescroll(element) {
        if(!element)
        {
            return false;
        }
        var scrollbar= document.createElement('div');
        scrollbar.appendChild(document.createElement('div'));
        scrollbar.style.overflow= 'auto';
        scrollbar.style.overflowY= 'hidden';
        scrollbar.style.width= '506px';
        scrollbar.firstChild.style.width= element.scrollWidth+'px';
        scrollbar.firstChild.style.paddingTop= '1px';
        scrollbar.firstChild.appendChild(document.createTextNode('\xA0'));
        scrollbar.onscroll= function() {
            element.scrollLeft= scrollbar.scrollLeft;
        };
        element.onscroll= function() {
            scrollbar.scrollLeft= element.scrollLeft;
        };
        element.parentNode.insertBefore(scrollbar, element);
    }
if(!element)
{
    return;
}

如果
getElementById
未找到元素,则返回
null

在开始时检查您的函数

function doublescroll(element) {
    if(element === null) {
        return;
    }

    //rest of code here.

使您的代码更加健壮:

function doublescroll(element_id) {
        var element = document.getElementById(element_id);
        if (!element) return;
        var scrollbar= document.createElement('div');
        scrollbar.appendChild(document.createElement('div'));
        scrollbar.style.overflow= 'auto';
        scrollbar.style.overflowY= 'hidden';
        scrollbar.style.width= '506px';
        scrollbar.firstChild.style.width= element.scrollWidth+'px';
        scrollbar.firstChild.style.paddingTop= '1px';
        scrollbar.firstChild.appendChild(document.createTextNode('\xA0'));
        scrollbar.onscroll= function() {
            element.scrollLeft= scrollbar.scrollLeft;
        };
        element.onscroll= function() {
            scrollbar.scrollLeft= element.scrollLeft;
        };
        element.parentNode.insertBefore(scrollbar, element);
    }

doublescroll('mainplh_boAutoOddsTable1_divScrollContainer');
doublescroll('mainplh_boAutoOddsTable2_divScrollContainer');
doublescroll('mainplh_boAutoOddsTable3_divScrollContainer');
doublescroll('mainplh_boAutoOddsTable4_divScrollContainer');
doublescroll('mainplh_boAutoOddsTable5_divScrollContainer');
doublescroll('mainplh_boAutoOddsTable6_divScrollContainer');
doublescroll('mainplh_boAutoOddsTable7_divScrollContainer');
doublescroll('mainplh_boAutoOddsTable8_divScrollContainer');
doublescroll('mainplh_boAutoOddsTable9_divScrollContainer');
doublescroll('mainplh_boAutoOddsTable10_divScrollContainer');

在函数开始时检查元素:

function doublescroll(element) {
        if(!element)
        {
            return false;
        }
        var scrollbar= document.createElement('div');
        scrollbar.appendChild(document.createElement('div'));
        scrollbar.style.overflow= 'auto';
        scrollbar.style.overflowY= 'hidden';
        scrollbar.style.width= '506px';
        scrollbar.firstChild.style.width= element.scrollWidth+'px';
        scrollbar.firstChild.style.paddingTop= '1px';
        scrollbar.firstChild.appendChild(document.createTextNode('\xA0'));
        scrollbar.onscroll= function() {
            element.scrollLeft= scrollbar.scrollLeft;
        };
        element.onscroll= function() {
            scrollbar.scrollLeft= element.scrollLeft;
        };
        element.parentNode.insertBefore(scrollbar, element);
    }
if(!element)
{
    return;
}

您可以在调用函数之前或之后检查是否存在。我想补充一点,任何修复该问题的解决方案都是可以接受的。包括在找不到元素时阻止脚本抛出错误。目前为止的所有答案都解决了您的问题。如果您希望整个过程停止,则需要检查函数的返回值,将所有函数调用封装到循环构造中,并在返回false时退出。谢谢大家!很难选择答案:)我已经选择了一个与我已经实施的确切解决方案。