Ik heb een JavaScript-code die deze fout geeft
Uncaught TypeError: Cannot read property 'value' of undefined
Code
var i1 = document.getElementById('i1');
var i2 = document.getElementById('i2');
var __i = {'user' : document.getElementsByName("username")[0], 'pass' : document.getElementsByName("password")[0] };
if( __i.user.value.length >= 1 ) { i1.value = ''; } else { i1.value = 'Acc'; }
if( __i.pass.value.length >= 1 ) { i2.value = ''; } else { i2.value = 'Pwd'; }
Wat betekent deze fout?
Antwoord 1, autoriteit 100%
Het lijkt erop dat een van uw waarden, met een eigenschapssleutel van ‘waarde’ niet gedefinieerd is. Test of i1
, i2
en __i
gedefinieerd zijn voordat de if-statements worden uitgevoerd:
var i1 = document.getElementById('i1');
var i2 = document.getElementById('i2');
var __i = {'user' : document.getElementsByName("username")[0], 'pass' : document.getElementsByName("password")[0] };
if(i1 && i2 && __i.user && __i.pass)
{
if( __i.user.value.length >= 1 ) { i1.value = ''; } else { i1.value = 'Acc'; }
if( __i.pass.value.length >= 1 ) { i2.value = ''; } else { i2.value = 'Pwd'; }
}
Antwoord 2, autoriteit 36%
Ofwel document.getElementById('i1')
, document.getElementById('i2')
, of document.getElementsByName("username")[0]
retourneert geen element. Controleer of alle elementen bestaan.
Antwoord 3, autoriteit 28%
Probeer dit, het werkt altijd, en je krijgt GEEN TypeError:
try{
var i1 = document.getElementById('i1');
var i2 = document.getElementById('i2');
var __i = {'user' : document.getElementsByName("username")[0], 'pass' : document.getElementsByName("password")[0] };
if( __i.user.value.length >= 1 ) { i1.value = ''; } else { i1.value = 'Acc'; }
if( __i.pass.value.length >= 1 ) { i2.value = ''; } else { i2.value = 'Pwd'; }
}catch(e){
if(e){
// If fails, Do something else
}
}
Antwoord 4, autoriteit 17%
Eerst moet u ervoor zorgen dat document.getElementsByName(“username”)[0] daadwerkelijk een object retourneert en niet “undefined”. U kunt eenvoudig controleren zoals
if (typeof document.getElementsByName("username")[0] != 'undefined')
Hetzelfde geldt voor het wachtwoord van het andere element.
Antwoord 5, autoriteit 17%
De berichten hier helpen me enorm op weg om een oplossing te vinden voor de Uncaught TypeError: Cannot read property ‘value’ of undefinedissue.
Er zijn hier al veel antwoorden die correct zijn, maar wat we hier niet hebben, is de combinatie van 2 antwoorden die dit probleem volgens mij volledig oplossen.
function myFunction(field, data){
if (typeof document.getElementsByName("+field+")[0] != 'undefined'){
document.getElementsByName("+field+")[0].value=data;
}
}
Het verschil is dat u een controle uitvoert (of een eigenschap is gedefinieerd of niet) en als de controle waar is, kunt u proberen er een waarde aan toe te kennen.
Antwoord 6
Je kunt gewoon een functie maken om te controleren of de variabele bestaat, anders wordt een standaardwaarde geretourneerd:
function isSet(element, defaultVal){
if(typeof element != 'undefined'){
return element;
}
console.log('one missing element');
return defaultVal;
}
en gebruik het in een variabele controle:
var variable = isSet(variable, 'Default value');