Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.01.2018, 18:24
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

Блок рейтинга для сайта
Доброго времени суток, пытаюсь написать скрипт, который должен выводить рейтинг статьи, то-есть пользователь кликает по кнопке и рейтинг статьи возрастает на +1, только начал изучать JS, вот что удалось написать...

<div id="com">
	<button id="com-check">Нравиться</button>
	<div id="com-out"></div>
</div>

let comNum = 0;
document.getElementById('com-check').onclick = function(){
	let comOut = document.getElementById('com-out');
	comOut.innerHTML = comNum;
	localStorage.setItem('coment', comNum);
	comNum++;
}

let storCom = localStorage.getItem('coment');
document.getElementById('com-out').innerHTML = storCom;

Проблема в том что, как сделать чтобы один пользователь мог только раз поставить рейтинг, и второе, после перезагрузки страницы рейтинг сохраняется, но при клике обнуляется счетчик и начинается все с нуля.
Спасибо...

Последний раз редактировалось TheSanches, 21.01.2018 в 20:22.
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2018, 19:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

TheSanches,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 21.01.2018, 19:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

TheSanches,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script>
window.addEventListener("DOMContentLoaded", function() {
  var comNum = localStorage.getItem("coment"),
      but = document.querySelector("#com-check"),
      out = document.querySelector("#com-out");
  if (!comNum) {
    comNum = 0;
    but.addEventListener("click", function rating() {
      comNum++;
      localStorage.setItem("coment", comNum);
      out.innerHTML = comNum;
      but.removeEventListener("click", rating);
    });
  }
  out.innerHTML = comNum;
});
  </script>
</head>

<body>
<div id="com">
 <button id="com-check">Нравиться</button>
 <div id="com-out"></div>
 </div>

</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 21.01.2018, 20:49
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

Спасибо
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2018, 04:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от TheSanches
Проблема в том что, как сделать чтобы один пользователь мог только раз поставить рейтинг
Клиентскими скриптами этого сделать нельзя, локальное хранилище для этого не годится.
Ответить с цитированием
  #6 (permalink)  
Старый 22.01.2018, 18:25
Аспирант
Отправить личное сообщение для TheSanches Посмотреть профиль Найти все сообщения от TheSanches
 
Регистрация: 21.01.2018
Сообщений: 78

Сообщение от laimas Посмотреть сообщение
Клиентскими скриптами этого сделать нельзя, локальное хранилище для этого не годится.
То есть для выполнения подобных задач нужны знания других языков, я так полагаю Node.js или php? .
Ответить с цитированием
  #7 (permalink)  
Старый 22.01.2018, 18:28
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

TheSanches,
Сообщение от TheSanches
для выполнения подобных задач нужны знания других языков
а также русского - слово Нравится пишется без мягкого знака
Ответить с цитированием
  #8 (permalink)  
Старый 22.01.2018, 18:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

TheSanches,
серверных языков много, какой выбрать, это вопрос "доходчивости и понимания" языка, это не мне решать. Просто проверки подобные этой должны выполняться сервером и разрешения должен выдавать он. Все что на клиенте легко подделать или обойти.

Голосование обычно разрешено регистрированным пользователям, что облегчает задачу серверу. В противном случае нужно решать непростую задачу - однозначного определения уникальности любого пользователя.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется сделать калькулятор для сайта по клинингу L_D_I Работа 12 20.12.2017 14:12
блок для сайта js+html+css andreydeli7 Общие вопросы Javascript 1 25.01.2017 08:34
CMS или Framework для сайта xShift Серверные языки и технологии 1 13.01.2017 17:56
background resize IceDvl jQuery 4 25.04.2014 17:54
opera6.ini настройки для сайта cool Opera, Safari и др. 0 21.01.2011 12:15