Подтвердить что ты не робот

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

Что означает эта ошибка?

4b9b3361

Ответ 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 существуют перед их обработкой.