Простите, что не сразу ответил! Да, то что вы описали в видео, лучше всего сделать при помощи ссылки, ведь она ведёт на страницу отзывов!
В таком случае, там совсем другая логика!
Каждый третий раз ссылка, на которую ещё не нажимали, появляется. Если на неё нажать, происходит переход, а вместо ссылки появляется «Спасибо»! При следующих заходах вместо такой ссылки пишут, что вы уже оставляли отзыв!
Данные получаются/сохраняются при помощи функции getData/saveData, которые получают/сохраняют данные в локальном хранилище, но вы можете, если хотите, переписать эти функции, чтобы данные получались/сохранялись удалённо (например на сервере)
Сама ссылка всегда открывается в новой вкладке (если функционал предполагает, то почему бы не автоматизировать!) Каждая такая ссылка должна иметь в атрибуте id префикс (в данном случае
rating-), после которого идёт уникальный номер (например, натуральные числа по порядку) Это позволяет однозначно обозначить ссылку на любой странице и сказать, посещали её или нет!
Вот пример...
<script>
document.addEventListener("DOMContentLoaded", function() {
function getData() {
var data = "ratingData" in localStorage ?
JSON.parse(localStorage.ratingData) : { count: 1 };
return Promise.resolve(data);
}
function saveData(ratingData) {
localStorage.ratingData = JSON.stringify(ratingData);
return Promise.resolve("ok");
}
var PREFIX = "rating-";
var links = Array.from(
document.querySelectorAll("a[id^='" + PREFIX.replace(/'/g, "\\'") + "']")
);
var hasBeenRatedElement = document.createElement("span");
hasBeenRatedElement.innerHTML = "Вы уже оставляли отзыв!";
var thanksElement = document.createElement("span");
thanksElement.innerHTML = "Спасибо!";
getData().then(function(ratingData) {
links.forEach(function(link) {
var id = link.id.replace(PREFIX, "");
if(id in ratingData) {
link.parentNode.insertBefore(hasBeenRatedElement.cloneNode(true), link);
link.parentNode.removeChild(link);
} else {
if(ratingData.count !== 0) {
link.parentNode.removeChild(link);
return;
}
link.target = "_blank";
link.addEventListener("click", function() {
ratingData[id] = 1;
saveData(ratingData);
link.parentNode.insertBefore(thanksElement.cloneNode(true), link);
link.parentNode.removeChild(link);
});
}
});
ratingData.count = (ratingData.count + 1) % 3;
saveData(ratingData);
});
});
</script>
<p><a id="rating-1" href="https://google.com/">Оставить отзыв 1</a></p>
<p><a id="rating-2" href="https://ya.ru/">Оставить отзыв 2</a></p>
Такие ссылки могут храниться в таблице в базе данных, тогда вы можете легко ими управлять, также в других таблицах может быть ссылка на первичный ключ `id` и пр.
Код:
|
+------+---------------------+
| id | link |
+------+---------------------+
| 1 | https://google.com/ |
| 2 | https://ya.ru/ |
+------+---------------------+ |
О, да! Язык не называется YuhvuhScreapt, он называется JavaScript. Может вам поможет эта табличка с некоторыми словами web-разработки!
http://malleys.lark.ru/english.html