Javascript.RU

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

Не выдергивается первый символ из выражения getAttribute('href')
Добрый вечер, гуру)))
Я новичок в этом языке, но старательно пытаюсь изучить.
Возникла проблема, и я ничего не могу найти, подскажите плиз.

Есть такая строчка:
document.querySelector(this.getAttribute('href')).classList.add('active');


Она находит элемент с href, и элементу, у которого такой же id добавляет класс 'active'.
Это работает, но я хочу немного изменить. Надо чтобы находился href, к значению этого href добавлялись символы 'sm', и уже элементам с id=sm+href добавлялся класс 'active'.
И все тут я села)))
Пишу:
document.querySelector('sm'+this.getAttribute('href')).classList.add('active');

И ничего не получается, вернее получается, что нет такого элемента 'sm#значениеhref', и это понятно. Получается мне надо удалить символ # из значения href. Пробовала через str, через регулярные выражения, но не получается. Подскажите, ткните носом, буду очень благодарна.

Последний раз редактировалось Heny, 27.01.2016 в 14:30.
Ответить с цитированием
  #2 (permalink)  
Старый 27.01.2016, 15:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

'sm'+this.hash.substr(1)
Ответить с цитированием
  #3 (permalink)  
Старый 27.01.2016, 16:46
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

alert('sm' + '#you_id'.slice(1));
Ответить с цитированием
  #4 (permalink)  
Старый 28.01.2016, 08:53
Аспирант
Отправить личное сообщение для Heny Посмотреть профиль Найти все сообщения от Heny
 
Регистрация: 27.01.2016
Сообщений: 35

Спасибо большое.
А вот теперь вылезла ошибка:
Uncaught TypeError: Cannot read property 'classList' of null



Можно я приложу весь свой малюсенький код? может подскажете откуда эта ошибка(
<script type="text/javascript">
	    var btn = document.querySelectorAll('.btn'),
		el = document.querySelectorAll('.el');
		   Array.prototype.forEach.call(btn, function(curr){
			   curr.addEventListener('click', function() {
				   
				   Array.prototype.forEach.call(el, function(curr){
					   curr.classList.remove('active');
				});
			document.querySelector('sm'+(this.getAttribute('href').slice(1))).classList.add('active');
        return false;        
    }, false);    
}); 
</script>

Последний раз редактировалось Heny, 28.01.2016 в 09:08.
Ответить с цитированием
  #5 (permalink)  
Старый 28.01.2016, 09:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Heny,
как выглядит тег sm? может так '#cm'+... если это id
Ответить с цитированием
  #6 (permalink)  
Старый 28.01.2016, 09:29
Аспирант
Отправить личное сообщение для Heny Посмотреть профиль Найти все сообщения от Heny
 
Регистрация: 27.01.2016
Сообщений: 35

Выглядит так:
Тут располагаются картинки со стилем el, у которого display: none;
<div id="sm1013" class="el"><img src="/konf3d/sm1013.png" /></div>
      <div id="sm1015" class="el"><img src="/konf3d/sm1015.png" /></div>
      <div id="sm1019" class="el"><img src="/konf3d/sm1019.png" /></div>

А тут располагаются типа кнопочки, при нажатии на которые к стилю el добавляется active, и display становится block:
<div class="panel2">
          <a class="btn" href="#1013"><img src="/konf3d/1013.png"></a>
          <a class="btn" href="#1015"><img src="/konf3d/1015.png"></a>
          <a class="btn"href="#1019"><img src="/konf3d/1019.png"></a>
        </div>


Смысл в том, что потом будет блок с приставкой 'sp' и другие, а кнопочки с href="" останутся теми же самыми

Последний раз редактировалось Heny, 28.01.2016 в 09:32.
Ответить с цитированием
  #7 (permalink)  
Старый 28.01.2016, 09:34
Аспирант
Отправить личное сообщение для Heny Посмотреть профиль Найти все сообщения от Heny
 
Регистрация: 27.01.2016
Сообщений: 35

Сообщение от рони Посмотреть сообщение
Heny,
как выглядит тег sm? может так '#cm'+... если это id
Спасибо, добрый человек!!!
Помогло так:
document.querySelector('#sm'+this.getAttribute('href').slice(1)).classList.add('active');

Надо же как просто оказалось!!!!
Ответить с цитированием
  #8 (permalink)  
Старый 28.01.2016, 09:45
Аспирант
Отправить личное сообщение для Heny Посмотреть профиль Найти все сообщения от Heny
 
Регистрация: 27.01.2016
Сообщений: 35

И еще маленький глупенький вопросик. Как сделать так, чтобы при нажатии на
<a class="btn" href="#1013"><img src="/konf3d/1013.png"></a>
, страница не прокручивалась до самой ссылки-кнопки? Так как
<div id="sm1013" class="el"><img src="/konf3d/sm1013.png" /></div>

с которым происходят изменения находится выше
Ответить с цитированием
  #9 (permalink)  
Старый 28.01.2016, 10:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Heny,
отменить переход по ссылке
curr.addEventListener('click', function(event) {event.preventDefault();
Ответить с цитированием
  #10 (permalink)  
Старый 28.01.2016, 11:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Heny
<a class="btn" href="#1015"><img src="/konf3d/1015.png"></a>
Ну так сразу и укажите якоря как href="#sm1015", тогда обратиться к id соответствующему будет проще document.querySelector(this.hash)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ругулярные выражения как исключить символ "\" Tek Общие вопросы Javascript 6 25.09.2014 11:07
Предполагается наличие ';' в IE7- FINoM (X)HTML/CSS 5 25.08.2012 16:05
Вывести первый символ документа! karakym Общие вопросы Javascript 17 02.12.2010 19:04