Javascript.RU

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

window.location.hash и addClass
Добрый день!
Я новичок в JS. Подскажите, где у меня ошибка.
if ( window.location.hash == "#age") { 
	function age() { 
		if ( $('li').hasClass('currentage') ) $('.currentage').removeClass('currentage').addClass('current');
	}
	}
	if ( window.location.hash == "#pr") { 
	function pr() { 
		if ( $('li').hasClass('currentpr') ) $('.currentpr').removeClass('currentpr').addClass('current');
		}
	}
	if ( window.location.hash == "#country") { 
	function country() { 
		if ( $('li').hasClass('currentcountry') ) $('.currentcountry').removeClass('currentcountry').addClass('current');
		}
	}


<body onload = "age(); pr(); country();">


такая конструкция не работает
но одна из частей работает нормально, например:
if ( window.location.hash == "#age") { 
	function age() { 
		if ( $('li').hasClass('currentage') ) $('.currentage').removeClass('currentage').addClass('current');
	}
	}


Где я что упускаю?
Ответить с цитированием
  #2 (permalink)  
Старый 03.10.2013, 14:03
Новичок на форуме
Отправить личное сообщение для Joliat Посмотреть профиль Найти все сообщения от Joliat
 
Регистрация: 03.10.2013
Сообщений: 7

Кстати, и почему не работает вот такая простая конструкция:
if ( window.location.hash == "#age") { 
		$('.currentage').removeClass('currentage').addClass('current');
	}
	if ( window.location.hash == "#pr") { 
		$('.currentpr').removeClass('currentpr').addClass('current');
	}
	if ( window.location.hash == "#country") { 
		$('.currentcountry').removeClass('currentcountry').addClass('current');
	}
Ответить с цитированием
  #3 (permalink)  
Старый 03.10.2013, 18:56
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от Joliat
такая конструкция не работает но одна из частей работает нормально, например:
Спорим, я угадаю, какой класс идет в списке первым?
if ( $('li').hasClass('currentpr') ) $('.currentpr').removeClass('currentpr').addClass('current');
Первый элемент $('li') не имеет такого класса, соответственно в условии получаем false и ничего не происходит.
Ответить с цитированием
  #4 (permalink)  
Старый 03.10.2013, 19:27
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

1) функции нельзя объявлять внутри условий.
2) Че за китай-код? Вам платят за количество строк?
3) На кой вам onload если у вас под рукой jQuery с его $(document).ready() ?
Почему не так ?:
$(document).ready(function(){
    var hash = location.hash.substring(1);
    if (hash) {
        var className = 'current' + hash;
        $('.' + className).removeClass(className).addClass('current');
    }
});

Вот только к чему все эти танцы с бубном? Какому человеку в здравом уме понадобится сначала генерить currentblabla на сервере, а затем заменять на current в браузере? Попахивает бредом, не говоря уж про кривизну рук.
__________________
В личку только с интересными предложениями

Последний раз редактировалось danik.js, 03.10.2013 в 19:29.
Ответить с цитированием
  #5 (permalink)  
Старый 03.10.2013, 19:39
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от danik.js
1) функции нельзя объявлять внутри условий.
Ну, вообще-то можно. Только это надо делать вот так
var age = function()

Сообщение от danik.js
Какому человеку в здравом уме понадобится сначала генерить currentblabla на сервере, а затем заменять на current в браузере?
Это может потребоваться для обозначения активного пункта в каком-нить навигационном меню по странице. А сервер в генерации хэша ссылки вообще может не участвовать, для этого достаточно якоря.
Ответить с цитированием
  #6 (permalink)  
Старый 03.10.2013, 20:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от BETEPAH
Это может потребоваться для обозначения активного пункта в каком-нить навигационном меню по странице. А сервер в генерации хэша ссылки вообще может не участвовать, для этого достаточно якоря.
Это понятно, но взгляни на скрипт автора. Он тупо меняет currentcountry на current. Какой в этом смысл?
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
removeClass addClass imediasun1 Элементы интерфейса 2 31.07.2013 05:09
изменение window.location.hash da_ff Элементы интерфейса 8 03.05.2013 11:52
AddClass к каждому первому элементу myocean jQuery 7 03.02.2013 14:44
Проблема с addClass и removeClass в Firefox klev2004 Общие вопросы Javascript 1 04.07.2012 18:20
window.location.hash... SeLLaX AJAX и COMET 13 11.06.2011 16:19