Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.08.2014, 15:53
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

Галлерея изображений
Ссылка

Нажмите на менюшку --> фото--> там 3 фотки, кликните на первую появится она же в увеличенном изображении, не могу понять как сделать так чтобы при клике на вторую фотку появлялась вторая фотка... чтобы это реализовывалось через одну функцию... а то так для каждой фотки функции писать чтото не очень хорошее решение я так думаю...

вот скрипт который отвечает за открытие большого изображения при клике на маленькое
function foto(){


  
   document.getElementById("img_main").src = images[0]; (Так вставляется изображение из массива номером 0  см. ниже функцию 'number')


var bg=document.getElementById('background');//Получили div с id bg
		button=document.getElementById('test');// Копка на которую кликать
		exit=document.getElementById('close');//Кнопка на закрытие
		paper=document.getElementById('wrapper');
		many=document.getElementById('hoverClose');
		bg.style.display='block';
		exit.style.display='block';
		paper.style.display='block';
		many.style.display="block";
	
	many.onclick= function closer(){
	bg.style.display='none';
	exit.style.display='none';
	paper.style.display='none';
	many.style.display='none';
	
	};
	
	

}



вот функция 'number' для смены изображений при клике
var images = new Array();
    var i = 0;
     
    images[0] = 'images/1.jpg';
    images[1] = 'images/3.jpg';
    images[2] = 'images/4.jpg';
     
  
	
	   function lol() {
        i = i-1;
        if (i < 0) {
            i = images.length-1;
        }
        document.getElementById("img_main").src = images[i];
    };   
	
	 function viewImages() {
        i = i+1;
         if (i == images.length) {
            i = 0;
        }
        document.getElementById("img_main").src = images[i];
        
    };


<div id ="test"class="gallery" onclick="foto()"><div class="inline"><div id ="zoomer"class="zoom"><img id="test2"src="images/search.png"/></div><img id="test2"src="images/1.jpg"/></div></div>

HELP!

Последний раз редактировалось DynkanMaclaud, 14.08.2014 в 16:06.
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2014, 17:17
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

не проще ли сделать все на готовом lightbox'e?
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2014, 17:26
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

да хотелось бы свой создать)) я же учусь... это у меня не заказ если бы делал сайт за деньки то конечно бы использовал готовое решение, а тут хочется своё когда делал свой лайтбокс не думал что такая проблема возникнет((((
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2014, 17:27
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

есть какие нибудь мысли Viral?)
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2014, 17:47
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

на второй фотографии у вас стоит onclick="foto2();"
функции foto2() у вас нет, поэтому оно и не работает.
вам надо передавать в функцию foto() переменную с id дива, из которого надо вытащить фотографию, или переменную с именем файла.
вообще вы очень интересно, на мой взгляд написали))

не хочу оскорбить, но если вдруг вы не в курсе, переменная в функцию передается так:

<script>
function alertVar(peremennaya){
    alert(peremennaya);
}
</script>
<input type="button" onclick="alertVar('передаваемая переменная')" value="clickme">
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2014, 17:59
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

function foto2(){

 foto();
  document.getElementById("img_main").src = images[1];
  
  
};


функцию 'foto2()'; я не написал специально так как если выбирать такой метод то для каждого изображения нужна свой отельная функция 'foto3()'; 'foto4()';... в скрипте выше таким образом я добиваюсь что при клике появляется лайтбокс с нужной фоткой , но почемуто рпиходится кликать два раз по кнопке next... НО это плохой метод так как прийдется использовать много функций((( хотелось бы чтобы всё в одной реализовывалось щас буду пробовать то о чем ты написал
Ответить с цитированием
  #7 (permalink)  
Старый 15.08.2014, 09:45
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

function foto(el){
  var imgSrc = el.getElementsByTagName('img')[1].getAttribute('src');
  
   document.getElementById("img_main").src = imgSrc;


var bg=document.getElementById('background');//Получили div с id bg
		button=document.getElementById('test');// Копка на которую кликать
		exit=document.getElementById('close');//Кнопка на закрытие
		paper=document.getElementById('wrapper');
		many=document.getElementById('hoverClose');
		bg.style.display='block';
		exit.style.display='block';
		paper.style.display='block';
		many.style.display="block";
	
	many.onclick= function closer(){
	bg.style.display='none';
	exit.style.display='none';
	paper.style.display='none';
	many.style.display='none';
	
	};
	
	

}


Вот пример для вашей ситуации, но можно гораздо меньшей кровью обойтись и меньшим кодом..


onclick="foto(this)" - везде поставьте вместо foto(), foto2() и т.д.
И нельзя присваивать нескольким элементам одинаковые id
Ответить с цитированием
  #8 (permalink)  
Старый 15.08.2014, 10:13
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

ДА работает, Viral только проблема в том что когда кликаешь кнопку Nazad или Next то по первому клику ничего не происходит а когда второй раз кликаешь то норм работает Ссылка

var images = new Array();
    var i = 0;
     
    images[0] = 'images/1.jpg';
    images[1] = 'images/3.jpg';
    images[2] = 'images/4.jpg';
     
  
	
	   function lol() {
        i = i-1;
        if (i < 0) {
            i = images.length-1;
        }
        document.getElementById("img_main").src = images[i];
    };   
	
	 function viewImages() {
        i = i+1;
         if (i == images.length) {
            i = 0;
        }
        document.getElementById("img_main").src = images[i];
        
    };
Ответить с цитированием
  #9 (permalink)  
Старый 15.08.2014, 10:22
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

это потому что i после того, как функция foto() отработает, остается неизменным.
Ответить с цитированием
  #10 (permalink)  
Старый 15.08.2014, 11:53
Аватар для DynkanMaclaud
Профессор
Отправить личное сообщение для DynkanMaclaud Посмотреть профиль Найти все сообщения от DynkanMaclaud
 
Регистрация: 08.08.2014
Сообщений: 261

блин я вообще ничего не понимаю надо за учебники садиться((((
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery-gp-gallery.js - разное отображение подгружаемых изображений frutality jQuery 1 09.09.2012 18:15
Повременная смена изображений jozev Элементы интерфейса 2 01.08.2011 18:43
Прокрутка изображений gen552 Элементы интерфейса 6 01.04.2011 13:11
Галлерея изображений Sub-zerro Общие вопросы Javascript 4 28.05.2010 16:12
Скролл мини изображений I-Trap Элементы интерфейса 1 25.11.2009 22:03