Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2015, 21:49
Интересующийся
Отправить личное сообщение для Jason_smith Посмотреть профиль Найти все сообщения от Jason_smith
 
Регистрация: 22.01.2015
Сообщений: 13

Слайдер с добавлением url на конкретный слайд
Доброго ввремени суток. Я новичёк в програмировании, и неоткажусь от помощи знающих. нужно решыть такой вопрос. Нужен самый простой слайдер. Который при активации пункта меню , открывал бы один из 4 дивов. и добавлял url на этот див в браузерную строку. Но недолжно выполнятся обновление страницы , и по сгенерированой url ссылке можно было б открыть конкретный div. Это вообще решаемо? И если решаемо то как? Заранее спасибо за вашу помощь)
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2015, 05:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А это как "открыть конкретный div"? Он вообще-то не открывается, он "болтается" на странице, в адресную строку браузера добавить его тоже нельзя. Можно при запросе страницы прокрутить элемент к div с конкретным id, это будет якорь на странице, а в url, это хеш - domain/page#id_name.
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2015, 23:17
Интересующийся
Отправить личное сообщение для Jason_smith Посмотреть профиль Найти все сообщения от Jason_smith
 
Регистрация: 22.01.2015
Сообщений: 13

https://www.youtube.com/watch?v=sAjAUmtGylY
Вот делаю урок все по этому видео, но что-то не так так как код всё равно не работает. Нужно также как и на видео сделать чтоб когда пользователь клацал по ссылке то подменялся урл только без # надо сделать. То есть это должна быть якобы имитация перехода по ссылке, но перехода не былоб просто показывался контент , с одного из 4 дивов а остальные скрытые, чтоб пользователь который открыл один из 4 дивов мог на него ссылку например кому нибуть отправить на конкретный див. и все это должно происходить на одной странице без подгрузок аяксов и тд. Надеюсь не запутал) Может есть идеи как это реализовать иначе не так как на видео.

Вот код если несложно проверте на наличие ошибок:

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>


<body>
<div class= "container">
  <h1> Welcome to my sample page</h1>
  <ul class = "nav" >
  <hr />
    <li> <a href="main"> Maine</a></li>
    <li> <a href="about">Aboute</a></li>
    <li> <a href="downloads">Downloads</a></li>
    <hr />
  </ul>
  <div class="content"></div>
</div>


<script>
	var links, 
	updatestate, 
	updatebuttons, 
	contentEL, 
	navEL;
	
	 contentEL = document.querySelector('.content');
	 navEL = document.getElementById('nav');
	   
	  Links = { 
	  main: "This is page 1",
	  about: "This is page 2",
	  downloads: "this is page 2"
	 };
	
	
	updatestate = function(state){ 
	  if (!state) return;
	  contentEL.innerHTML = links[state.page];
	  updatebuttons(state);
	  };  
	  
	updatebuttons = function(state){
	 [].slice.call(navEL.querySelectoraALL('a'))
	  .forEach(function(e){
		var classList = e.parentNode.classList;
		 state.page === e.getAttribute('href')
		  ? classList.add('active')
			: classList.remove('active');
	 });
	  };
	  
	 window.addEventListener('postate', function(e){
	 updatestate(e.state);
		 });
	if(navEL){  
	 navEL.addEventListener('click', function(e){
	  e.preventDefault();
	   var state;
	    if (e.target.tagName !=='A') return;
		 state = {page: e.target.getAttribute('href')};
		 history.pushState(state, '', state.page);
		   updatestate(state);
			
	  });
	}
</script>
</body>
</html>

Последний раз редактировалось Jason_smith, 12.03.2015 в 11:26.
Ответить с цитированием
  #4 (permalink)  
Старый 11.03.2015, 06:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Мне так кажется, что по мультикам можно научится вязанию на спицах или крючком, а вот изучать язык....

Смотрите внимательно мультик, копируйте что там пишут. Например, у вас:

navEL = document.getElementById('nav');

А на странице есть элемент с таким id?
Ответить с цитированием
  #5 (permalink)  
Старый 11.03.2015, 07:18
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Links vs links - регистр имеет значение.

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

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 11.03.2015, 07:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Jason_smith
Вот код если несложно проверте на наличие ошибок
Тебе недостаточно проверки браузером на наличие ошибок? Жми F12 и смотри в консоль.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 12.03.2015, 11:33
Интересующийся
Отправить личное сообщение для Jason_smith Посмотреть профиль Найти все сообщения от Jason_smith
 
Регистрация: 22.01.2015
Сообщений: 13

<div class="container">
<h1> Welcome to my sample page</h1>
<ul id="nav">
<hr>
<li> <a href="main"> Maine</a></li>
<li> <a href="about">Aboute</a></li>
<li> <a href="downloads">Downloads</a></li>
<hr>
</ul>
<div class="content"></div>
</div>


var links,
updatestate,
updatebuttons,
contentEL,
navEL,

contentEL = document.querySelector('.content');
navEL = document.querySelector('.nav');

links = {
main: "This is page 1",
about: "This is page 2",
downloads: "this is page 2"
};  

updatestate = function(state){
if (!state) return;
contentEL.innerHTML = links[state.page];
updatebuttons(state);
};

updatebuttons = function(state){
[].slice.call(navEL.querySelectorALL('a'))
.forEach(function(e){
var classList = e.parentNode.classList;
state.page === e.getAttribute('href')
? classList.add('active')
: classList.remove('active');
});
};

window.addEventListener('popstate', function(e){
updatestate(e.state);
});


navEL.addEventListener('click', function(e){
var state;

if (e.target.tagName !=='A') return;
state = { page: e.target.getAttribute('href')};
history.pushState(state, '', state.page);
updatestate(state);
e.preventDefault();
});


Исправил выше указанные ошибки но всё равно не работает.
Консоль выбивает ошибку в строке"history.pushState(state, '', state.page);"
но я там ошибку не вижу вроди правильно всё...((( Посмотрите пожалуйста что это за ошибка и иза -чего она?

Последний раз редактировалось Jason_smith, 12.03.2015 в 12:21.
Ответить с цитированием
  #8 (permalink)  
Старый 12.03.2015, 12:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Jason_smith
Посмотрите пожалуйста что это за ошибка
А у тебя глаз нету? Не можешь понять ошибку сам - то хотяб покажи ее нам.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 12.03.2015, 12:24
Интересующийся
Отправить личное сообщение для Jason_smith Посмотреть профиль Найти все сообщения от Jason_smith
 
Регистрация: 22.01.2015
Сообщений: 13

в этой строке: history.pushState(state, '', state.page)

сама ошибка:Uncaught TypeError: Cannot read property 'addEventListener' of null
Ответить с цитированием
  #10 (permalink)  
Старый 12.03.2015, 12:47
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Jason_smith
в этой строке: history.pushState(state, '', state.page)
А где в ней addEventListener?
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переделать функцию adspro AJAX и COMET 5 09.03.2015 04:32
Не появляются картинки через jquery lobanov_kirill_ jQuery 1 22.09.2012 20:05
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
переход на выбор сайт через поле ввода url (как убрать функцию "открыть все") ? rashid86 Элементы интерфейса 1 31.03.2011 14:54
JS на конкретный Url Blizzart Общие вопросы Javascript 5 21.02.2010 19:23