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.