Попытка исправить ошибку типа javascript приложения для разработки приложения - PullRequest
0 голосов
/ 19 января 2020

Попытка переключения между экранами в приложении FitBit, которое использует. js. Я могу переключиться на второй экран в первом клике, но второй не будет работать. Как я могу это исправить?

import document from "document";

let myRect = document.getElementById("gen_button");
let tumbler = document.getElementById("tumbler");
let back = document.getElementById("ok");

myRect.onclick = function(e) {
  document.replaceSync("tumbler.gui");
  }

let back = document.getElementById("ok");
back.onclick = function(e) {
  document.replaceSync("index.gui");
  }

1 Ответ

0 голосов
/ 22 марта 2020

Ваш #ok элемент находится внутри tumbler.gui, поэтому он не будет существовать, когда будут поступать ваши document.getElementById вызовы (поскольку в это время загружается index.gui).

Необходимо загрузить tumbler.gui файл до ищет #ok и устанавливает его обработчик onclick.

Когда загружено tumbler.gui, все ссылки на элементы в index.gui становятся недействительными, а обработчики уничтожаются :

ПРИМЕЧАНИЕ. Все обработчики и прослушиватели документов и элементов будут очищены после вызова replaceSyn c.

, поэтому index.gui настройка (поиск элементов, настройка обработчиков) должна быть выполнена снова после возврата из tumbler.gui.

Вот как я бы go об этом:

import document from 'document';

// index.gui elements
let myRect;

// set up index.gui after load
function setUpIndexScreen() {
  myRect = document.getElementById('gen_button');
  myRect.onclick = function() {
    document.replaceSync('tumbler.gui');
    setUpTumblerScreen();
  };
}

// tumbler.gui elements
let tumbler, back;

// set up tumbler.gui after load
function setUpTumblerScreen() {
  tumbler = document.getElementById('tumbler');
  back = document.getElementById('ok');
  back.onclick = function() {
    document.replaceSync('index.gui');
    setUpIndexScreen();
  };
}

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