我正在维护一个非常古老的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";
}
答案 0 :(得分:0)
听起来你需要尝试/捕获你会得到的参考错误吗?
try {
var myVar = txtIngredient;
} catch (e) {
if (e instanceof ReferenceError) {
// code here
}