JavaScript Ошибка: Uncaught TypeError: Невозможно установить свойство 'value' из null - PullRequest
0 голосов
/ 10 февраля 2020

Ниже мой код:

var obj = null;
var voterIC = "";

$(function ()
{
  $("#btnRegister").click(function (e)
  {
    voterIC = $("#nric").val();

    if ( voterIC == "")
        $("#messageEdit").html("<h4 style=\"color:red\">Please fill in NRIC!</h4>");
    else
        obj = new Object();
        obj.NRIC = voterIC;
        obj.CreatedDate = firebase.database.ServerValue.TIMESTAMP;

    var newPostKey = firebase.database().ref().child('voter').push().key;

    var updates = {};
    updates['/voter/' + newPostKey] = obj;

    firebase.database().ref().update(updates).then(function()
    {
      $("#messageEdit").html('<h10 style=\"color:red\"><b>Update Successfully</h10><b>');
    });
  });
});

Почему я получаю следующую ошибку и как ее решить?

Uncaught TypeError: Невозможно установить свойство 'NRI C 'of null

Спасибо.

Ответы [ 3 ]

2 голосов
/ 10 февраля 2020

Проблема в том, что вы не поставили скобки вокруг блоков в вашем if состоянии. При правильном форматировании ваш код выглядит следующим образом:

if (voterIC == "") {
    $("#messageEdit").html("<h4 style=\"color:red\">Please fill in NRIC!</h4>");
} else {
    obj = new Object();
}

obj.NRIC = voterIC;
obj.CreatedDate = firebase.database.ServerValue.TIMESTAMP;

Рассмотрим случай, когда voterIC является пустой строкой. Вы устанавливаете значение obj для нового объекта только тогда, когда этого не происходит . Затем вы продолжаете пытаться установить свойство NRIC объекта, но из-за потока логики c его не существует.

Чтобы исправить проблему, поставьте скобки вокруг всех операторов в условном выражении:

if (voterIC == "") {
  $("#messageEdit").html("<h4 style=\"color:red\">Please fill in NRIC!</h4>");
} else {
  obj = new Object();
  obj.NRIC = voterIC;
  obj.CreatedDate = firebase.database.ServerValue.TIMESTAMP;
}
1 голос
/ 10 февраля 2020

Если вы сделаете отступ в коде правильно, вы увидите, что оператор if эквивалентен следующему:

if (voterIC == "")
  $("#messageEdit").html("<h4 style=\"color:red\">Please fill in NRIC!</h4>");
else
  obj = new Object();
obj.NRIC = voterIC;
obj.CreatedDate = firebase.database.ServerValue.TIMESTAMP;

Когда voterIC == "", вы никогда не назначите obj, так что вы получите ошибка.

Чтобы исправить это, необходимо поставить фигурные скобки вокруг блока else.

if (voterIC == "") {
  $("#messageEdit").html("<h4 style=\"color:red\">Please fill in NRIC!</h4>");
} else {
  obj = new Object();
  obj.NRIC = voterIC;
  obj.CreatedDate = firebase.database.ServerValue.TIMESTAMP;
}

См. Почему считается плохой практикой опускать фигурные скобки?

0 голосов
/ 10 февраля 2020

Вы должны использовать скобки для оператора else:

else{
obj = new Object();
obj.NRIC = voterIC;
obj.CreatedDate = firebase.database.ServerValue.TIMESTAMP;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...