JS: почему remove () не работает в обработчике событий lamba? - PullRequest
0 голосов
/ 13 февраля 2020

У меня был следующий код:

  var progressbar = document.createElement('div');
  //...
  xhr.onload = function() {
    if (this.status == 200) {
      var resp = JSON.parse(this.response);
      if (resp.ok) {
        var image = document.createElement('img');
        image.src = resp.dataUrl;
        image.onload = () => {
          progressbar.remove();
        };
        formularz.appendChild(image);
        //...

Не сработало. Я проверил, был ли недоступен индикатор выполнения:

        //...
        var image = document.createElement('img');
        image.src = resp.dataUrl;
        image.onload = () => {
          alert(progressbar.innerHTML);
          progressbar.remove();
        };
        //...

Но, что удивительно, я получил предупреждение с содержимым узла индикатора выполнения ...

Затем я изменил мой код:

        //...
        var image = document.createElement('img');
        image.src = resp.dataUrl;
        function r(progressbar) {
          progressbar.remove();
        };
        image.onload = r(progressbar);
        //...

И это сработало.

Это ошибка или функция? Если это функция, почему я смог прочитать содержимое элемента в предупреждении (вторая версия кода)? Я использую webkit, если это имеет значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...