Показать сообщение отдельно
  #1 (permalink)  
Старый 05.03.2020, 07:53
Кандидат Javascript-наук
Отправить личное сообщение для samdo Посмотреть профиль Найти все сообщения от samdo
 
Регистрация: 27.05.2017
Сообщений: 112

Заменить getElementById на getElementsByClassName
Приветствую! Подскажите как правильно заменить getElementById на getElementsByClassName в нижеуказанном скрипте. Это скрипт GDPR Cookie, который имеет 2 кнопки (1-принять и 2-закрыть). Они обе должны срабатывать одинаково, однако, мы знаем, что не бывает одинаковый ID у двух элементов на странице, поэтому хотелось бы заменить id на class.
(function(){
	"use strict";

	window.FS = window.FS || {}; 
	window.FS.GDPR = window.FS.GDPR || {};

	//setup hook for when accept is clicked
	var onAcceptCbs = []; 
	window.FS.GDPR.onAccept = function(cb){
		onAcceptCbs.push(cb);
	};

	//get the banner
	var banner = document.getElementById('GdprCookieBanner');
	var acceptButton = document.getElementById('GdprCookieBannerAccept');
	acceptButton.onclick = function(event){
		//save the acceptance cookie
		var d = new Date();
		d.setTime(d.getTime() + (365*24*60*60*1000));
		
		//figure out the domain
		var cookieDomain = window.location.hostname;
		var domainParts = cookieDomain.split('.');
		var firstPart = domainParts[0];

		if( !isNumeric(firstPart)  &&  (cookieDomain.indexOf("local")<0)  &&  (domainParts.length > 1) ){
			cookieDomain = '.' + domainParts.slice(domainParts.length -2).join('.');
		}

		//actually save the cookie value
		document.cookie = 'gdprAccepted=true;path=/;expires=' + d.toUTCString() + ';domain='+cookieDomain;
		banner.style.display = "none";

		//trigger any callbacks that have registered for when accept is clicked
		onAcceptCbs.forEach(function(cb){
			cb(); 
		});

		//mark that it's been accepted
		window.FS.GDPR.accepted = true; 
		
		//stops the click
		return false;
	};

	if(document.cookie.indexOf('gdprAccepted=true') < 0){
		//cookie not found. show banner
		banner.style.display = "block";

		//mark that we don't have acceptance
		window.FS.GDPR.accepted = false; 
	}else{
		//mark that 
		window.FS.GDPR.accepted = true; 
	}

	function isNumeric(item){
		return !isNaN(parseFloat(item)) && isFinite(item);
	}

})();

Спасибо!
Ответить с цитированием