Potlačit nedefinované chyby JavaScriptu?

Napsal jsem skript, který kontroluje sadu přepínacích tlačítek, která mají být zkontrolována. Ale kvůli různým možnostem se zobrazí různé přepínače. Existuje způsob, jak potlačit chyby JavaScriptu, když se objeví undefined/getElementById je nulový? Něco jako @ -char dělá v PHP?

Aktualizace:

Trochu více informací o pozadí. Vytvořil jsem webovou stránku, kam mohou uživatelé zasílat obrázky a další strana, pro kterou jsou obrázky určeny, může vybrat své 3 nejlepší obrázky. Každý obrázek má tedy tři přepínače. Potíž zde spočívá v tom, že přepínací tlačítka musí být řízena rozměrově (horizontálně a vertikálně), protože odeslaný obrázek může být pouze na místě 1, 2 nebo 3. Toto je můj pracovní kód. Ale přidávám mnoho if(!var == undefined) nedělá kód hezčím. Proto mě zajímá, jestli je možné něco jako @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;
            }
        }
    }   
}

Odpověď

Můžete snadno otestovat null nebo undefined value v JavaScriptu, protože obě tyto hodnoty jsou falešné:

var element = document.getElementById('some-id');
if (element) {
   element.value = 'Hello';
}

Můžete také zvážit použití try/catch blokovat:

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;
   }
}

Buďte však opatrní, že výše uvedené potlačí všechny TypeError výjimky a to může ztížit ladění vašeho kódu.