Javascript.RU

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

getElementById на getElementsByClassName
Доброго дня.
Есть такой скрипт:
<script>
			(function() {
				var bttn = document.getElementById( 'notification-trigger' );

				// make sure..
				bttn.disabled = false;

				bttn.addEventListener( 'click', function() {
					// simulate loading (for demo purposes only)
					classie.add( bttn, 'active' );
					setTimeout( function() {

						classie.remove( bttn, 'active' );
						
						// create the notification
						var notification = new NotificationFx({
							message : '<span class="icon icon-megaphone"></span><p>You have some interesting news in your inbox. Go <a href="#">check it out</a> now.</p>',
							layout : 'bar',
							effect : 'slidetop',
							type : 'notice', // notice, warning or error
							onClose : function() {
								bttn.disabled = false;
							}
						});

						// show the notification
						notification.show();

					}, 1200 );
					
					// disable the button (for demo purposes only)
					this.disabled = true;
				} );
			})();
		</script>

И кнопка, которая его вызывает:
<button id="notification-trigger" class="progress-button">
						<span class="content">Show Notification</span>
						<span class="progress"></span>
					</button>

Я хочу сделать несколько таких кнопок на странице, чтобы при клике срабатывал один и тот же скрипт.
Обычная подмена
var bttn = document.getElementById( 'notification-trigger' );

на
var bttn = document.getElementsByClassName( 'progress-button' );

не сработала. Почему-то скрипт перестает работать в этом случае.
Я не понимаю в JavaScript, поэтому, возможно, не вижу каких-то очевидных вещей. Просьба помочь. Благодарю.
Ответить с цитированием
  #2 (permalink)  
Старый 30.07.2014, 11:04
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

condpattern, потому что bttn стал массивом
Ответить с цитированием
  #3 (permalink)  
Старый 30.07.2014, 11:17
Аватар для condpattern
Интересующийся
Отправить личное сообщение для condpattern Посмотреть профиль Найти все сообщения от condpattern
 
Регистрация: 30.07.2014
Сообщений: 17

Как быть?
Вот демо моего скрипта http://tympanus.net/Development/Noti...-slidetop.html
Там есть кнопка. Мне нужно сделать таких кнопок 2+, но чтобы они все отрабатывали одинаково.
Может я не прав, но по идее здесь не нужно переписывать целиком скрипт, просто что-то подправить. Но как я уже говорил, я, увы, с JavaScript даже не на Вы.
Ответить с цитированием
  #4 (permalink)  
Старый 30.07.2014, 11:26
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

1. Получаешь все кнопки (document.getElementsByClassName, document.querySelectorAll)
2. Идешь по всем кнопкам (for) и навешиваешь на каждую событие и его обработчик (у тебя это уже есть в коде).
Ответить с цитированием
  #5 (permalink)  
Старый 30.07.2014, 11:36
Аватар для condpattern
Интересующийся
Отправить личное сообщение для condpattern Посмотреть профиль Найти все сообщения от condpattern
 
Регистрация: 30.07.2014
Сообщений: 17

Сообразил. Благодарю.
Ответить с цитированием
  #6 (permalink)  
Старый 30.07.2014, 11:51
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

condpattern,
(function() {
	var bttn = document.getElementsByClassName('progress-button');
	for (var i = 0; i < bttn.length; i++) {
		(function(k) {
			// make sure..
			bttn[k].disabled = false;
			bttn[k].addEventListener('click', function() {
				// simulate loading (for demo purposes only)
				classie.add(bttn[k], 'active');
				setTimeout(function() {
					classie.remove(bttn[k], 'active');
					// create the notification
					var notification = new NotificationFx({
						message: '<span class="icon icon-megaphone"></span><p>You have some interesting news in your inbox. Go <a href="#">check it out</a> now.</p>',
						layout: 'bar',
						effect: 'slidetop',
						type: 'notice', // notice, warning or error
						onClose: function() {
							bttn[k].disabled = false;
						}
					});
					// show the notification
					notification.show();
				}, 1200);
				// disable the button (for demo purposes only)
				this.disabled = true;
			});
		})(i);
	}
})();
Ответить с цитированием
  #7 (permalink)  
Старый 30.07.2014, 13:00
Аватар для condpattern
Интересующийся
Отправить личное сообщение для condpattern Посмотреть профиль Найти все сообщения от condpattern
 
Регистрация: 30.07.2014
Сообщений: 17

Сообщение от Rise Посмотреть сообщение
condpattern,
(function() {
	var bttn = document.getElementsByClassName('progress-button');
	for (var i = 0; i < bttn.length; i++) {
		(function(k) {
			// make sure..
			bttn[k].disabled = false;
			bttn[k].addEventListener('click', function() {
				// simulate loading (for demo purposes only)
				classie.add(bttn[k], 'active');
				setTimeout(function() {
					classie.remove(bttn[k], 'active');
					// create the notification
					var notification = new NotificationFx({
						message: '<span class="icon icon-megaphone"></span><p>You have some interesting news in your inbox. Go <a href="#">check it out</a> now.</p>',
						layout: 'bar',
						effect: 'slidetop',
						type: 'notice', // notice, warning or error
						onClose: function() {
							bttn[k].disabled = false;
						}
					});
					// show the notification
					notification.show();
				}, 1200);
				// disable the button (for demo purposes only)
				this.disabled = true;
			});
		})(i);
	}
})();
Работает. Благодарю за помощь.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер обратного отсчета времени с кнопками denisich84 Общие вопросы Javascript 31 20.01.2015 17:48
Я нуб, нужна помощь в JS - getElementById Jotunn Общие вопросы Javascript 5 18.06.2014 14:12
getElementById в IE и Opera snake Javascript под браузер 2 07.12.2013 04:12
Greasemonkey не работает getElementById zema888 Firefox/Mozilla 8 07.08.2013 07:57
Таймер отсчета времени с кнопками denisich84 Работа 10 16.02.2012 16:25