J'ai du code javascript qui donne cette erreur
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'; }
Que signifie cette erreur?
On dirait que l'une de vos valeurs, avec une clé de propriété de 'valeur' n'est pas définie. Testez que i1
, i2
et __i
sont définis avant d'exécuter les instructions if:
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'; }
}
document.getElementById('i1')
, document.getElementById('i2')
ou document.getElementsByName("username")[0]
ne renvoie aucun élément. Vérifiez que tous les éléments existent.
Essayez ceci, cela fonctionne toujours et vous n’obtiendrez PAS de 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
}
}
Tout d'abord, vous devez vous assurer que document.getElementsByName ("nom d'utilisateur") [0] renvoie réellement un objet et non "non défini". Vous pouvez simplement vérifier comme
if (typeof document.getElementsByName("username")[0] != 'undefined')
De même pour l'autre mot de passe d'élément.
Les articles ici m'aident beaucoup à trouver une solution pour le Uncaught TypeError: Impossible de lire la propriété 'valeur' de undefined issue.
Il existe déjà de nombreuses réponses correctes, mais ce que nous n’avons pas ici, c’est la combinaison de 2 réponses qui, à mon avis, résoudra complètement ce problème.
function myFunction(field, data){
if (typeof document.getElementsByName("+field+")[0] != 'undefined'){
document.getElementsByName("+field+")[0].value=data;
}
}
La différence est que vous faites une vérification (si une propriété est définie ou non) et si la vérification est vraie, vous pouvez essayer de lui attribuer une valeur.
Vous pouvez simplement créer une fonction pour vérifier si la variable existe, sinon elle retournera une valeur par défaut:
function isSet(element, defaultVal){
if(typeof element != 'undefined'){
return element;
}
console.log('one missing element');
return defaultVal;
}
Et utilisez-le dans une vérification variable:
var variable = isSet(variable, 'Default value');