Uncaught TypeError: Не удается прочитать значение свойства 'w90>
У меня есть код JavaScript, который дает эту ошибку
Uncaught TypeError: Cannot read property 'value' of undefined
Код
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'; }
Что означает эта ошибка?
Ответы
Ответ 1
Кажется, что одно из ваших значений, с ключом свойства "значение" undefined. Проверьте, что i1
, i2
и __i
определены перед выполнением операторов 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'; }
}
Ответ 2
Либо document.getElementById('i1')
, document.getElementById('i2')
, либо document.getElementsByName("username")[0]
не возвращает никакого элемента. Убедитесь, что все элементы существуют.
Ответ 3
Попробуйте это, он всегда работает, и вы получите NO 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
}
}
Ответ 4
Во-первых, вы должны убедиться, что document.getElementsByName( "имя пользователя" ) [0] фактически возвращает объект, а не "undefined". Вы можете просто проверить, как
if (typeof document.getElementsByName("username")[0] != 'undefined')
Аналогично для пароля другого элемента.
Ответ 5
Сообщения здесь очень помогают мне найти решение для Uncaught TypeError: не могу прочитать значение свойства <проблема w90 > .
Здесь уже есть много правильных ответов, но то, что у нас здесь нет, - это комбинация для 2 ответов, которые, я думаю, полностью разрешают эту проблему.
function myFunction(field, data){
if (typeof document.getElementsByName("+field+")[0] != 'undefined'){
document.getElementsByName("+field+")[0].value=data;
}
}
Разница в том, что вы делаете чек (если свойство определено или нет), и если проверка верна, вы можете попытаться присвоить ему значение.
Ответ 6
Вы можете просто создать функцию, чтобы проверить, существует ли переменная, иначе вернет значение по умолчанию:
function isSet(element, defaultVal){
if(typeof element != 'undefined'){
return element;
}
console.log('one missing element');
return defaultVal;
}
И использовать его в проверке переменных:
var variable = isSet(variable, 'Default value');
Ответ 7
Ваш код выглядит как автоматически сгенерированный из другого кода - вы должны проверить, что html-элементы с id=i1
и i2
и name=username
и password
существуют перед их обработкой.