繁体   English   中英

遇到未定义的元素时,我可以使javascript运行函数吗?

[英]Can I make javascript run a function when it encounters an undefined element?

我正在维护一个非常老的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";
    }

听起来您需要对要获得的参考错误进行尝试/捕获?

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

暂无
暂无

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

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