我编写了一个脚本,用于检查要检查的一组radiobuttons。但由于不同的可能性,不同的单选按钮将显示出来。当弹出undefined/getElementById
为空时,有没有办法抑制JavaScript错误?类似于@
- char在PHP中做什么?
更多背景信息。我已经创建了一个网站,用户可以在其中提交图像,而另一方的图像可以选择其前三个图像。所以每个图像都有三个radiobuttons。这里的困难在于无线电按钮必须受到尺寸(水平和垂直)的控制,因为提交的图像可能只在1,2或3处。这是我的工作代码。但添加许多if(!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;
}
}
}
}
答案 0 :(得分:5)
您可以轻松地在JavaScript中测试null
或undefined
值,因为这两个值都是假的:
var element = document.getElementById('some-id');
if (element) {
element.value = 'Hello';
}
您还可以考虑使用try/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
异常,这可能会使您的代码更难调试。
答案 1 :(得分:0)
您可以通过getElementById检查按钮是否存在,然后检查其长度。你在使用任何框架吗?
答案 2 :(得分:0)
试试这个
var element = document.getElementById('some-id');
element?.value = 'Hello';