Javascript.RU

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

Как можно узнать\вычислить кол-во доступных картинок
Добрый вечер.

Имеется код для смены картинок при наведении курсора:
js:
$(document).ready(function() {
  $('.short-story a img').each(function() {
    var slideImg = $(this);
	var iid;
	var curImg = 0;
	var imgSrc = new Array;
	
    var imageSrc   = slideImg.attr("src");
    var imgPatch  = imageSrc.split('_');
    imgSrc = [imgPatch[0] + '_0' + '0' + '.jpg', imgPatch[0] + '_0' + '1' + '.jpg', imgPatch[0] + '_0' + '2' + '.jpg'];
	
	
	slideImg.bind('mouseover', function() {			
			iid = setInterval(function() {				
				curImg < imgSrc.length-1 ? ++curImg : curImg = 0;				
				slideImg.attr("src", imgSrc[curImg]);								
			}, 400);					
		});
		
	slideImg.bind('mouseout', function() { clearInterval(iid); curImg = 0; this.src=imgSrc[0]});
  });
});


html:
<div id="dle-content">
<div class="short-story">
  <span class="short-title1">
    <a href='index2.html'><img id="2604" src="/uploads/thumbs/2014-04-14/2604/xvid_00.jpg" width="200" height="140"></a>
  </span>
</div>
<div class="short-story">
  <span class="short-title1">
    <a href='index2.html'><img id="2605" src="/uploads/thumbs/2014-04-15/2605/xxvid_00.jpg" width="200" height="140"></a>
  </span>
</div>
<div class="short-story">
  <span class="short-title1">
    <a href='index2.html'><img id="2606" src="/uploads/thumbs/2014-04-16/2606/xxxvid_00.jpg"  width="200" height="140"></a>
  </span>
</div>
</div>


у картинок всегда окончание в таком формате - _00.jpg, _01.jpg, _02.jpg ... и т.п.

Хотелось бы в js сделать массив картинок, который создавался динамически, примерно так:
imgPatch[0] + '_0' + i + '.jpg'


ну Вы меня поняли), в переменную "i" занести порядковый номер картинки, изначально кол-во картинок не известно, вот в этом и основная задачка

реально это сделать с помощью js? может логика скрипта не верна и есть уже готовые решения по теме?
Ответить с цитированием
  #2 (permalink)  
Старый 18.08.2014, 01:38
Интересующийся
Отправить личное сообщение для desertFox Посмотреть профиль Найти все сообщения от desertFox
 
Регистрация: 29.08.2013
Сообщений: 20

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

$(document).ready(function() {
  $('.short-story a img').each(function() {
    var slideImg = $(this);
	var iid;
	var curImg = 0;
	var imgSrc = new Array;
	
    var imageSrc   = slideImg.attr("src");
    var imgPatch  = imageSrc.split('_');
	

	imgSrc[0] = imgPatch[0] + '_0' + '0' + '.jpg';

	
	slideImg.on('mouseover', function() {




	
	var col = 0;

	for( var i = 1; i < 10; i++ )
	{
	  $(this).parent().prepend('<img alt="" src="' + imgPatch[0] + '_0' + i + '.jpg" id="clonImg' + i + '">');

	  if(('#clonImg'+ i).length > 0)
	  {
	  $('#clonImg'+ i).remove();
	  col++;
	  imgSrc[col] = imgPatch[0] + '_0' + col + '.jpg';
	  }
	  else {break;}
	}



	
	
			iid = setInterval(function() {				
				curImg < imgSrc.length-1 ? ++curImg : curImg = 0;				
				slideImg.attr("src", imgSrc[curImg]);								
			}, 400);					
		});
		
	slideImg.on('mouseout', function() { clearInterval(iid); curImg = 0; this.src=imgSrc[0]});
  });
});


не соображу как верно условие сделать, это - if(('#clonImg'+ i).length > 0), не сработало
Ответить с цитированием
  #3 (permalink)  
Старый 18.08.2014, 10:20
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<div id="dle-content">
<div class="short-story">
  <span class="short-title1">
    <a href='index2.html'><img id="2604" src="/uploads/thumbs/2014-04-14/2604/xvid_00.jpg" width="200" height="140"></a>
  </span>
</div>
<div class="short-story">
  <span class="short-title1">
    <a href='index2.html'><img id="2605" src="/uploads/thumbs/2014-04-15/2605/xxvid_01.jpg" width="200" height="140"></a>
  </span>
</div>
<div class="short-story">
  <span class="short-title1">
    <a href='index2.html'><img id="2606" src="/uploads/thumbs/2014-04-16/2606/xxxvid_02.jpg"  width="200" height="140"></a>
  </span>
</div>
</div>
<script>

$(document).ready(function() {

   var imgSrc = [];

   $('.short-story a img').each(function() {

        imgSrc.push($(this).attr("src").split('_')[0] + "_");

   });

   alert(imgSrc);

   function getSrcByNum(num) {

     return imgSrc[num] + (((num + "").length == 2) ? num : "0" + num) + ".jpg";

   }

   alert(getSrcByNum(1));
});

</script>


Честно говоря не совсем понял что вы хотите, но массив путей который вы описали можно сделать так.

Последний раз редактировалось tsigel, 18.08.2014 в 10:24.
Ответить с цитированием
  #4 (permalink)  
Старый 18.08.2014, 12:27
Интересующийся
Отправить личное сообщение для desertFox Посмотреть профиль Найти все сообщения от desertFox
 
Регистрация: 29.08.2013
Сообщений: 20

спасибо, но не то,

с помощью php на экран выводится только одна картинка, вот и пытаюсь проверить есть ли в той же папке ещё картинки и если есть то менять одну на следующую,

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

пример что хочу сделать на киносайтах - выводится превью фильма, при наведение на превьюшку листаются кадры, но изначально выводится только одна картинка а остальные с помощью js
Ответить с цитированием
  #5 (permalink)  
Старый 18.08.2014, 12:37
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

А, понятно. Вообще данную задачу лучше решать на сервере, и передавать в js количество картинок от сервера. Но если очень хочестся сделать через Ж, то можно так:
$(document).ready(function() {

   for (var i = 0; i < 10; i++) {

      loadImage(i);

   }

    function loadImage(index) {

       var image = new Image()
       image.onload = function () {
           //данная картинка существует и загружена доступна по this длайте с ней что хотите
       };
       image.onerror = function () {
          //Картинки с таким номером не найдено!
       }
       image.src = "someUrl" + index + ".png";
    }   
});
Ответить с цитированием
  #6 (permalink)  
Старый 18.08.2014, 14:41
Интересующийся
Отправить личное сообщение для desertFox Посмотреть профиль Найти все сообщения от desertFox
 
Регистрация: 29.08.2013
Сообщений: 20

огромное спасибо, заработало, мне как раз и надо было через Ж)))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
можно как то отправить содержимое нужного дива в другую форму а потом расспечатьтать sarik Общие вопросы Javascript 1 04.03.2013 16:08
Как можно отправить данные с одного сайта на другой с jQuery grigori59 AJAX и COMET 5 21.12.2012 17:25
Как можно улучшить такой код? Reiter Общие вопросы Javascript 0 06.11.2012 16:19
как можно доотправить форму Артем125 AJAX и COMET 1 23.11.2011 21:22
Как можно активировать/деактивировать функцию Решатель Элементы интерфейса 2 31.10.2011 10:38