Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:
empty-line/>

// Отыскать каждый из этих элементов по их атрибутам id

for(var id in ui) ui[id] = document.getElementByld(id):

// Определить обработчик событий для поля ввода

ui.input.onchange = handleGuess;

// Выбрать случайное число и инициализировать состояние игры

state = {

n: Math.floor(99 * Math.random) + 1, // Целое число: 0 < n < 100

low: 0, // Нижняя граница, где находится угадываемое число

high: 100, // Верхняя граница, где находится угадываемое число

guessnum: 0, // Количество выполненных попыток угадать число

guess: undefined // Последнее число, указанное пользователем

};

// Изменить содержимое документа, чтобы отобразить начальное состояние

display(state):

// Эта функция вызывается как обработчик события onload, а также как обработчик щелчка

// на кнопке Play Again (Играть еще раз), которая появляется в конце игры.

// Во втором случае аргумент playagain будет иметь значение true, и если это так,

// мы сохраняем новое состояние игры. Но если функция была вызвана в ответ

// на событие "load", сохранять состояние не требуется, потому что событие "load"

// может возникнуть также при переходе назад по истории посещений из какого-то

// другого документа в существующее состояние игры. Если бы мы сохраняли начальное

// состояние, в этом случае мы могли бы затереть имеющееся в истории актуальное

// состояние игры. В броузерах, поддерживающих метод pushState, за событием "load"

// всегда следует событие "popstate". Поэтому, вместо того чтобы сохранять

// состояние здесь, мы ждем событие "popstate". Если вместе с ним будет получен

// объект состояния, мы просто используем его. Иначе, если событие "popstate"

// содержит в поле state значение null, мы знаем, что была начата новая игра,

// и поэтому используем replaceState для сохранения нового состояния игры,

if (playagain === true) save(state);

}

// Сохраняет состояние игры с помощью метода pushStateO, если поддерживается

function save(state) {

if (!history.pushState) return;// Вернуться, если pushState не определен

// С каждым состоянием мы связываем определенную строку URL-адреса.

// Этот адрес отображает число попыток, но не содержит информации о состоянии игры,

// поэтому его нельзя использовать для создания закладок.

// Мы не можем поместить информацию о состоянии в URL-адрес,

// потому что при этом пришлось бы указать в нем угадываемое число,

var url = "#guess" + state.guessnum;

// Сохранить объект с информацией о состоянии и строку URL

history.pushState(state, // Сохраняемый объект с информацией о состоянии

"", // Заглавие: текущие броузеры игнорируют его

url); // URL состояния: бесполезен для закладок

}

// Обработчик события onpopstate, восстанавливающий состояние приложения,

function popState(event) {

if (event.state) { // Если имеется объект состояния, восстановить его

// Обратите внимание, что event.state является полной копией

// сохраненного объекта состояния, поэтому мы можем изменять его,

// не опасаясь изменить сохраненное значение.

state = event.state; // Восстановить состояние

displayCstate); // Отобразить восстановленное состояние

}

else {

// Когда страница загружается впервые, событие "popstate" поступает

// без объекта состояния. Заменить значение null действительным

Поделиться:
Популярные книги

Я не царь. Книга XXIV

Дрейк Сириус
24. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я не царь. Книга XXIV

Вернуть невесту. Ловушка для попаданки 2

Ардова Алиса
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2

Тринадцатый XII

NikL
12. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
7.00
рейтинг книги
Тринадцатый XII

Ваше Сиятельство 2

Моури Эрли
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Ваше Сиятельство 2

Девочка из прошлого

Тоцка Тала
3. Айдаровы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Девочка из прошлого

Старый, но крепкий 7

Крынов Макс
7. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
5.00
рейтинг книги
Старый, но крепкий 7

Бандит

Щепетнов Евгений Владимирович
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бандит

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Слезы Эйдена 1

Владимиров Денис
11. Глэрд
Фантастика:
боевая фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Слезы Эйдена 1

Принадлежать им

Зайцева Мария
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Принадлежать им

Шайтан Иван 6

Тен Эдуард
6. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
7.00
рейтинг книги
Шайтан Иван 6

Перешагнуть пропасть

Муравьёв Константин Николаевич
1. Перешагнуть пропасть
Фантастика:
боевая фантастика
космическая фантастика
8.38
рейтинг книги
Перешагнуть пропасть

Дважды одаренный

Тарс Элиан
1. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Дважды одаренный

Граф Книга третья

Первухин Андрей Евгеньевич
10. Ученик
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Граф Книга третья