Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Кажется, что одно из ваших значений, с ключом свойства «значение» не определено. Проверьте, что 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'; }
}
Во-первых, вы должны убедиться, что document.getElementsByName («имя пользователя») [0] фактически возвращает объект, а не «undefined». Вы можете просто проверить, как
if (typeof document.getElementsByName("username")[0] != 'undefined')
Аналогично для пароля другого элемента.
Попробуйте это, он всегда работает, и вы получите 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
}
}
if(e)
должен быть внутри catch(e)
, так как он уже поймал (e)
– TetraDev
5 April 2016 в 15:40
Либо document.getElementById('i1')
, document.getElementById('i2')
, либо document.getElementsByName("username")[0]
не возвращают элемент. Проверьте, что все элементы существуют.
Сообщения здесь очень помогают мне найти решение для Uncaught TypeError: невозможно прочитать значение свойства неопределенной проблемы.
Здесь уже есть много правильных ответов, но то, что у нас здесь нет, это комбинация для двух ответов, которые, я думаю, полностью разрешают эту проблему.
function myFunction(field, data){
if (typeof document.getElementsByName("+field+")[0] != 'undefined'){
document.getElementsByName("+field+")[0].value=data;
}
}
Разница в том, что вы делаете чек (если свойство определено или нет), и если проверка верна, тогда вы можете попытаться присвоить ей значение.