Как правильно написать этот window.history.go(-historyCount)

В фрагменте кода, который я пишу, мне нужно, чтобы пользователь возвращался к своей истории в зависимости от количества товаров в корзине.

Поэтому я написал этот код:

var productCount = $('.rdsubs-cart-name').length;
var historyCount = productCount + 1;
console.info(historyCount);
$("a.btn-continue").click(function() {
  window.history.go(-historyCount);
});

Но, как я и предполагал, эта часть написана неправильно. window.history.go(-historyCount);

Я не знаю названия, поэтому мне очень сложно найти что-то об этом в Google. Так что я надеялся, что кто-то из вас может указать мне правильное направление!

Спасибо!

Дополнительная информация:

Когда в корзине 4 товара, а пользователь удаляет 1 товар, страница перезагружается. Таким образом, когда пользователь удаляет все 4 продукта, он также перезагружает страницу 4 раза. Поэтому, если пользователь нажимает «Продолжить покупки», ему нужно вернуться на 5 страниц истории. В противном случае возник бы бесконечный цикл перезагрузки корзины.

Когда я пишу window.history.go(-5);, это работает, но когда я пишу window.history.go(-historyCount);, ничего не происходит.

Код был действительно правильно написан! Виновником был мой браузер. После открытия другого браузера и перехода на ту же страницу все заработало как положено. Я благодарна всем за помощь!

Возможно, я что-то упускаю, но я сразу не замечаю ничего «неправильного» в этом коде. Можете ли вы уточнить, что вы ожидаете, в отличие от того, что на самом деле происходит является?

Tyler Roper 10.04.2019 16:49

@TylerRoper При нажатии ничего не происходит, и я не получаю сообщение об ошибке в консоли. Когда я меняю historyCount на число, это работает. Я добавлю больше информации в вопрос.

purple11111 10.04.2019 16:52

Что, если вы console.info(historyCount) в событии клика? Это то, что вы ожидаете?

Tyler Roper 10.04.2019 16:55

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

purple11111 10.04.2019 16:56
Я скопировал + вставил ваш код в JSFiddle и работает отлично. Как вы понимаете, в вашем вопросе просто недостаточно информации, чтобы мы могли дать вам однозначный ответ. Ваша проблема кажется не связанной с кодом, который вы включили.
Tyler Roper 10.04.2019 17:02

@TylerRoper Спасибо за создание скрипки. Когда я нажимаю кнопку в скрипке, тоже ничего не происходит, она реагирует по-другому на вашем конце?

purple11111 10.04.2019 17:03

С моей стороны, нажатие кнопки действительно отправляет меня назад на 5 страниц.

Tyler Roper 10.04.2019 17:06

@TylerRoper Я нашел виновника. Это был мой браузер. Загрузил вашу скрипку и страницу, над которой я работал, в другом браузере, и теперь все работает как положено. Большое спасибо, что выручили меня!

purple11111 10.04.2019 17:09

Рад, что у тебя получилось. Вам нужно предоставить и принять ответ или удалить свой пост, чтобы решить эту проблему.

isherwood 10.04.2019 17:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
40
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, что одна ошибка, которая может произойти, заключается в том, что productCount изменился с момента определения события, но поскольку вы извлекаете значение вне события, вы не используете последнее значение и, следовательно, видите неожиданный результат.

Переместите извлечение productCount в функцию события и посмотрите, решит ли это проблему, с которой вы столкнулись.

$("a.btn-continue").click(function() {
  var productCount = $('.rdsubs-cart-name').length;
  var historyCount = productCount + 1;
  window.history.go(-historyCount);
});

Спасибо за ваш ответ, я попробовал, и он работает точно так же, он отлично отображается в журнале консоли, но ничего не происходит.

purple11111 10.04.2019 16:59
Ответ принят как подходящий

Код был действительно правильно написан! Виновником был мой браузер. После открытия другого браузера и перехода на ту же страницу все заработало как положено. Я благодарна всем за помощь!

Другие вопросы по теме