Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Блокировка повторного перехода по ссылке (https://javascript.ru/forum/misc/69407-blokirovka-povtornogo-perekhoda-po-ssylke.html)

Alessio18911 20.06.2017 12:41

Блокировка повторного перехода по ссылке
 
Привет! Делаю пагинатор. Хочется, чтобы если находишься на странице, она была некликабельна, т.е. не переходило повторного перехода по ссылке и, соответственно, она не перезагружалась. Получилось сделать так:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Made with Thimble</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <div class="paginator">
      <a class="prev paginator-disabled" href="https:\\yahoo.com"></a>
      <a class="paginator-current" href="https:\\vk.com" target="_blank">1</a>
      <a href="https:\\vk.com" target="_blank">2</a>
      <a href="https:\\vk.com" target="_blank">3</a>
      <a href="https:\\vk.com" target="_blank">4</a>
      <a href="https:\\vk.com" target="_blank">5</a>
      <a class="next" href="https:\\yahoo.com"></a>
    </div>
	<script src="script.js"></script>
  </body>
</html>


/* Fonts from Google Fonts - more at [url]https://fonts.google.com[/url] */
@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,700');
@import url('https://fonts.googleapis.com/css?family=Merriweather:400,700');

body {
  background-color: green;
  font-family: "Open Sans", sans-serif;
  padding: 5px 25px;
  font-size: 18px;
  margin: 0;
  color: #444;
}

h1 {
  font-family: "Merriweather", serif;
  font-size: 32px;
}

a {
  font-size: 16px;
  font-weight: 600;
  line-height: 18px;
  color: rgb(255, 255, 255); 
  text-decoration: none;
}

.paginator {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  box-sizing: border-box;
  width: 215px;
  margin-left: auto;
  margin-top: 39px;
  margin-bottom: 11px;
  padding: 13px 13px;
  /* outline: 1px solid red; */
}

.paginator a {
  width: 26px;
  height: 26px;
  margin-right: 2px;
  margin-bottom: 5px;
  font-size: 16px;
  font-weight: 600;
  line-height: 26px;
  text-align: center;
/*   outline: 1px solid yellow;  */

}

.paginator a:last-of-type {
  margin-right: 0;
}	

.paginator .paginator-current {
  width: 26px;
  height: 26px;
  color: rgb(50, 50, 50);
  background-color: rgb(255, 255, 255); 
  border-radius: 50%;
}

.paginator .prev,
.paginator .next {
  width: 10px;
  height: 27px;
  background-image: url("spritesheet.png");
  background-position: -8px -694px;
}

.paginator .prev {
  margin-right: 12px;
  transform: rotate(180deg);
  background-position: -8px -693px;
}

.paginator .next {
  margin-left: 10px;
}

.paginator-disabled {
  opacity: 0.2;
  cursor: default;
}


var paginator = document.getElementsByClassName("paginator");
    var pageNum = paginator[0].getElementsByTagName("a");
    for (var i = 0; i < pageNum.length; i++) 
    {
        pageNum[i].addEventListener("click", function () 
        {
          for (i = 0; i < pageNum.length; i++) 
          {
            pageNum[i].classList.remove("paginator-current");
          }
          this.classList.add("paginator-current");
		  this.addEventListener("click", function(evt) {
			evt.preventDefault();  
		  });
		});
	}

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

ksa 20.06.2017 14:18

Цитата:

Сообщение от Alessio18911
Подскажите, пожалуйста, что нужно исправить.

Для "некликабельности" ссылки достаточно сделать ее такой

<a href="javascript:void(0)">Test</a>


Но если пользователь перечитает страницу - ссылки опять "восстановятся".
Либо придется подключать локальное хранилище и "усиливать" скрипт на странице...

Alessio18911 20.06.2017 19:50

Спасибо, что откликнулись! Но могли бы Вы написать, как изменить мой код - я новичок, поэтому ещё не совсем понимаю, что и куда дописать :)

ksa 21.06.2017 08:33

Цитата:

Сообщение от Alessio18911
как изменить мой код

Вот...

<a href='http://javascript.ru/forum/misc/69407-blokirovka-povtornogo-perekhoda-po-ssylke.html#post456068'>Test</a>
<script type='text/javascript'>
var o=document.getElementsByTagName('a')[0];
o.setAttribute('href','javascript:void(0)')
</script>

Alessio18911 21.06.2017 12:21

Возможно, я что-то не так переношу - никак не могу запустить:
var paginator = document.getElementsByClassName("paginator");
var pageNum = paginator[0].getElementsByTagName("a")[0];
pageNum.setAttribute('href','javascript:void(0)');

      for (var i = 0; i < pageNum.length; i++) 
      {
        pageNum[i].addEventListener("click", function () 
                                    {
          for (i = 0; i < pageNum.length; i++) 
          {
            pageNum[i].classList.remove("paginator-current");
          }
          this.classList.add("paginator-current");
          this.addEventListener("click", function(evt) {
            evt.preventDefault();
          });
        });
      }


Часовой пояс GMT +3, время: 02:15.