我可以在遇到未定义的元素时让javascript运行一个函数吗?

时间:2017-05-26 00:33:13

标签: javascript jquery internet-explorer-6

我正在维护一个非常古老的Web窗体应用程序,该应用程序与IE6兼容的javascript粘合在一起。这意味着可以在JS中访问元素而无需首先进行初始化。

我的意思是使用它是'有效':

txtIngredient.value = 'potato';

为了让它能够在较新的浏览器中运行,例如Chrome,Firefox等,此代码将变为:

document.getElementById('txtIngredient').value = 'potato';

显然,Chrome,Firefox等在遇到前一个语句时会抛出一个未定义的错误,并且由于引发的异常,JS会停止执行。

目前我正在运行代码并移植它以使其看起来更像后者,但我想知道,我是否可以编写一个错误处理程序来处理未定义的错误,这些错误会在这些情况发生时捕获,然后以某种方式返回该元素,如果它在DOM中找到它并重新尝试该语句?如果是这样,这将节省大量工作。

编辑:例如:

此代码不起作用:

function ShrinkDetails() {
        document.Form1.btnExpand.value = "+ Dispense Details";
        trDateDispensed.style.display = "none";
        trDuration.style.display = "none";
        trStartDate.style.display = "none";
        trRepeats.style.display = "none";
        trQuantity.style.display = "none";
    }

Chrome等在document.Form1上抛出一个未定义的错误。

此代码可以使用:

function ShrinkDetails() {
        document.getElementById('btnExpand').value = "+ Dispense Details";
        document.getElementById('trDateDispensed').style.display = "none";
        document.getElementById('trDuration').style.display = "none";
        document.getElementById('trStartDate').style.display = "none";
        document.getElementById('trRepeats').style.display = "none";
        document.getElementById('trQuantity').style.display = "none";
    }

1 个答案:

答案 0 :(得分:0)

听起来你需要尝试/捕获你会得到的参考错误吗?

try {
   var myVar = txtIngredient;
} catch (e) {
  if (e instanceof ReferenceError) {
  // code here
}