抑制JavaScript未定义的错误?
我写了一个脚本,检查一组要检查的单选按钮。但由于可能性不同,将显示不同的单选按钮。当JavaScript错误弹出的抑制JavaScript未定义的错误?,javascript,Javascript,我写了一个脚本,检查一组要检查的单选按钮。但由于可能性不同,将显示不同的单选按钮。当JavaScript错误弹出的undefined/getElementById为空时,是否有方法抑制JavaScript错误?类似于PHP中的@-char 更新: 更多的背景信息。我已经建立了一个网站,用户可以提交图片,另一方的图片是谁可以选择他们的前3名的图像。所以每个图像都有三个单选按钮。这里的困难在于单选按钮必须进行尺寸控制(水平和垂直),因为提交的图像可能仅位于位置1、2或3。这是我的工作代码。但是,如果
undefined/getElementById
为空时,是否有方法抑制JavaScript错误?类似于PHP中的@
-char
更新:
更多的背景信息。我已经建立了一个网站,用户可以提交图片,另一方的图片是谁可以选择他们的前3名的图像。所以每个图像都有三个单选按钮。这里的困难在于单选按钮必须进行尺寸控制(水平和垂直),因为提交的图像可能仅位于位置1、2或3。这是我的工作代码。但是,如果(!var==undefined)添加许多,则不会使代码更漂亮。因此,我想知道是否有像@suppressMe这样的东西是可能的
function HandleRadioButtons(id, type, idString, img)
{
var idArray = idString.split("|");
var place1 = document.getElementById("G_" + id);
var place2 = document.getElementById("S_" + id);
var place3 = document.getElementById("B_" + id);
var img1 = document.getElementById("Winner1");
var img2 = document.getElementById("Winner2");
var img3 = document.getElementById("Winner3");
switch(type)
{
case "G" :
place2.checked = false;
place2.disabled = true;
place3.checked = false;
place3.disabled = true;
img1.style.background = 'url(' + img + ') no-repeat center center #FFF';
break;
case "S" :
place1.checked = false;
place1.disabled = true;
place3.checked = false;
place3.disabled = true;
img2.style.background = 'url(' + img + ') no-repeat center center #FFF';
break;
case "B" :
place1.checked = false;
place1.disabled = true;
place2.checked = false;
place2.disabled = true;
img3.style.background = 'url(' + img + ') no-repeat center center #FFF';
break;
}
var current1, current2, current3 = "";
for(i = 0; i < idArray.length - 1; i++)
{
var place1 = document.getElementById("G_" + idArray[i]);
var place2 = document.getElementById("S_" + idArray[i]);
var place3 = document.getElementById("B_" + idArray[i]);
if(place1.checked == true)
{
var current1 = idArray[i];
}
if(place2.checked == true)
{
var current2 = idArray[i];
}
if(place3.checked == true)
{
var current3 = idArray[i];
}
}
for(i = 0; i < idArray.length - 1; i++)
{
var place1 = document.getElementById("G_" + idArray[i]);
var place2 = document.getElementById("S_" + idArray[i]);
var place3 = document.getElementById("B_" + idArray[i]);
if(idArray[i] != id && idArray[i] != current1 && idArray[i] != current2 && idArray[i] != current3)
{
switch(type)
{
case "G" :
place1.disabled = false;
place2.disabled = false;
place3.disabled = false;
break;
case "S" :
place1.disabled = false;
place2.disabled = false;
place3.disabled = false;
break;
case "B" :
place1.disabled = false;
place2.disabled = false;
place3.disabled = false;
break;
}
}
}
}
功能按钮(id、类型、idString、img)
{
变量idArray=idString.split(“|”);
var place1=document.getElementById(“G_U8;”+id);
var place2=document.getElementById(“S_”+id);
var place3=document.getElementById(“B_”+id);
var img1=document.getElementById(“Winner1”);
var img2=document.getElementById(“Winner2”);
var img3=document.getElementById(“Winner3”);
开关(类型)
{
案例“G”:
place2.checked=false;
place2.disabled=true;
place3.checked=false;
place3.disabled=true;
img1.style.background='url('+img+')无重复中心#FFF';
打破
案例“S”:
place1.checked=false;
place1.disabled=true;
place3.checked=false;
place3.disabled=true;
img2.style.background='url('+img+')无重复中心#FFF';
打破
案例“B”:
place1.checked=false;
place1.disabled=true;
place2.checked=false;
place2.disabled=true;
img3.style.background='url('+img+')无重复中心#FFF';
打破
}
var current1、current2、current3=“”;
对于(i=0;i
您可以通过getElementById检查按钮是否存在,然后检查其长度。您正在使用任何框架吗?您可以通过getElementById检查按钮是否存在,然后检查其长度。您是否使用任何框架?您可以轻松测试JavaScript中的null
或未定义的值,因为这两个值都是错误的:
var element = document.getElementById('some-id');
if (element) {
element.value = 'Hello';
}
您也可以考虑使用<代码>尝试/ catch <代码>块:
try {
var element = document.getElementById('some-id');
element.value = 'Hello';
// ... the rest of your code here.
}
catch (e) {
if (!(e instanceof TypeError)) {
// The exception is not a TypeError, so throw it again.
throw e;
}
}
但是,请注意,上述操作将抑制所有TypeError
异常,这可能会使您的代码更难调试。您可以轻松测试JavaScript中的null
或未定义的
值,因为这两个值都是错误的:
var element = document.getElementById('some-id');
if (element) {
element.value = 'Hello';
}
您也可以考虑使用<代码>尝试/ catch <代码>块:
try {
var element = document.getElementById('some-id');
element.value = 'Hello';
// ... the rest of your code here.
}
catch (e) {
if (!(e instanceof TypeError)) {
// The exception is not a TypeError, so throw it again.
throw e;
}
}
但是,请注意,上述操作将抑制所有TypeError
异常,这可能会使您的代码更难调试。请尝试此操作
var element = document.getElementById('some-id');
element?.value = 'Hello';
试试这个
var element = document.getElementById('some-id');
element?.value = 'Hello';
为什么不检查它们是否未定义,或者返回值是否为null
?听起来您最好还是解决问题的根源。我的意思是,也许有一种方法可以对它进行编码,这样你就可以完全避免它。无论哪种方式,您都应该发布代码。为什么不检查它们是否未定义或返回值是否为null
?听起来您最好还是修复问题的根源。我的意思是,也许有一种方法可以对它进行编码,这样你就可以完全避免它。无论哪种方式,你都应该发布你的代码。好吧,如果是这样的话仍然是这样。。好吧,如果没有其他选择,那就应该这样做;)谢谢,我明天就试试,谢谢+1从我这里,如果它起作用,你也会得到接受;)我明天再登记。好吧,如果是这样的话,那还是这样。。好吧,如果没有其他选择,那就应该这样做;)谢谢,我明天就试试,谢谢+1从我这里,如果它起作用,你也会得到接受;)我明天会再次检查。请注意,可选链接在V14之前的NodeJS中不起作用。请注意,可选链接在V14之前的NodeJS中不起作用。