Расширения Messenger Ошибка Javascript SDK [дубликат]

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

37
задан Eric Leschinski 12 November 2013 в 04:31
поделиться

6 ответов

Кажется, что одно из ваших значений, с ключом свойства «значение» не определено. Проверьте, что 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'; }
}
30
ответ дан Chris Stryczynski 18 August 2018 в 13:06
поделиться
  • 1
    Это поможет мне выяснить мою проблему. Я переместил код сценария из раздела главы в раздел тела, и проблема решена. – maruf 4 November 2016 в 09:29

Во-первых, вы должны убедиться, что document.getElementsByName («имя пользователя») [0] фактически возвращает объект, а не «undefined». Вы можете просто проверить, как

if (typeof document.getElementsByName("username")[0] != 'undefined')

Аналогично для пароля другого элемента.

6
ответ дан Abhijit 18 August 2018 в 13:06
поделиться

Попробуйте это, он всегда работает, и вы получите 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
    }
}
7
ответ дан Joe L. 18 August 2018 в 13:06
поделиться
  • 1
    Спасибо, что показал правильный способ сделать это. Хотя мне любопытно, почему if(e) должен быть внутри catch(e), так как он уже поймал (e) – TetraDev 5 April 2016 в 15:40
  • 2
    @TetraDev 'e' вернет 'undefined', если это не допустимый TypeError. Таким образом, вы проверяете TypeError в операторе if, и вы также можете выполнять пользовательские TypeErrors. – Joe L. 5 April 2016 в 20:43
  • 3
    просто и здорово :) – user 4 October 2017 в 17:39

Либо document.getElementById('i1'), document.getElementById('i2'), либо document.getElementsByName("username")[0] не возвращают элемент. Проверьте, что все элементы существуют.

10
ответ дан nfechner 18 August 2018 в 13:06
поделиться
  • 1
    спасибо ... я забываю, что когда пользователь вошел в систему, нет ввода имени пользователя или пароля ... я добавил if statement 'if (i2 & amp; ip; i2)', и он работает. Иногда самый простой код может получить вы в беде: D – John 1 July 2011 в 17:53

Сообщения здесь очень помогают мне найти решение для Uncaught TypeError: невозможно прочитать значение свойства неопределенной проблемы.

Здесь уже есть много правильных ответов, но то, что у нас здесь нет, это комбинация для двух ответов, которые, я думаю, полностью разрешают эту проблему.

function myFunction(field, data){
  if (typeof document.getElementsByName("+field+")[0] != 'undefined'){
  document.getElementsByName("+field+")[0].value=data;
 }
}

Разница в том, что вы делаете чек (если свойство определено или нет), и если проверка верна, тогда вы можете попытаться присвоить ей значение.

5
ответ дан txyoji 18 August 2018 в 13:06
поделиться
0
ответ дан Khaled Ali 30 October 2018 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: