Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.02.2016, 13:25
Аспирант
Отправить личное сообщение для diga Посмотреть профиль Найти все сообщения от diga
 
Регистрация: 13.01.2016
Сообщений: 57

отображение изображений
Доброго времени суток, каким образом можно реализовать следующий скрипт?

имеется массив с определенным значениями (отсортированный)
например:
['a', 'a', 'b', 'c']

необходимо вывести изображение на страницу в зависимости от значений элементов в массиве,
т.е. с начало надо вывести изображение который соответствует элементу "а" из массива,
если количество элементов повторяется то около изображения надо писать X2 (т.е. данное изображение в количестве 2 штуки )

если массив стал вида:

['a', 'a', 'a', 'b', 'c']
то уже вывести все изображения с учетом того что изображение под значениям массива имеет вид:
"изображение" X3

html должен выглядеть следующим образом:
<div class="my_img">
<img src="img/1.png" alt="a"> 
x2
<img src="img/2.png" alt="b"> 
...
</div>


идея: думал можно первоначально скрыть все изображение, и в зависимости от значений в массиве
отображать их, так же сделать счетчик который будет смотреть сколько повторяющих элементов
в массиве и так же выводить их, но этот метод не оптимальный. каким образом это можно реализовать? Будет не плохо если поможете написать скрип

сделал следующим образом:

for (var i=0;i<Arr.length; i=i+1)
			{
				var pc = document.getElementById("my_img");
				if (Arr[i]=='a') pc.innerHTML="<img src='img/1.png' alt='a'>";
				else if (BlackArr[i]=='b') pc.innerHTML="<img src='img/2.png' alt='b'>";
				else if (BlackArr[i]=='c') pc.innerHTML="<img src='img/3.png' alt='c'>";
				else if (BlackArr[i]=='d') pc.innerHTML="<img src='img/4.png' alt='d'>";
				else if (BlackArr[i]=='e') pc.innerHTML="<img src='img/5.png' alt='e'>";
				
			}


но тогда у меня изображение выведется один раз и все. Т.е. получаю изображение 1.png хоть меня массив имеет вид ['a', 'b']. и не получается реализовать вывод количества изображение (X2)

Последний раз редактировалось diga, 03.02.2016 в 14:06.
Ответить с цитированием
  #2 (permalink)  
Старый 03.02.2016, 14:34
Аспирант
Отправить личное сообщение для diga Посмотреть профиль Найти все сообщения от diga
 
Регистрация: 13.01.2016
Сообщений: 57

сделал так:
var bp=0, bb=0, bn=0, br=0, bq=0;
				var Resbp='', Resbb='', Resbn='', Resbr='', Resbq='';
				for (var i=0;i<Arr.length; i=i+1)
				{
					if (Arr[i]=='a') {
						bp=bp+1;
						Resbp="<img src='img/1.png' alt='a'>X" + bp;
						} else if (Arr[i]=='b') {
							bb=bb+1;
							Resbb="<img src='img/2.png' alt='b'>X"+bb;
						} else if (Arr[i]=='c') {
							bn=bn+1;
							Resbn="<img src='img/3.png' alt='c'>X"+bn;
						} else if (Arr[i]=='d') {
							br=br+1;
							Resbr="<img src='img/4.png' alt='d>X"+br;
						} else if (Arr[i]=='e') {
							Resbq="<img src='img/5.png' alt='e'>"
						}
				}
				
				var pc = document.getElementById("my_img");
				pc.innerHTML=Resbp+Resbb+Resbn+Resbr+Resbq;


работает как надо, но скрипт не красивый, и не оптимальный, помогите изменить
Ответить с цитированием
  #3 (permalink)  
Старый 03.02.2016, 14:58
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Узнать количество одинаковых символов в отсортированном массиве можно так
<script>
		var arr = ['a','a','a','b','b','c']
		var obj = new Object();
		var index,elem,lastIndex,length
		while (arr.length != 0){
			index = 0;
			elem = arr[index];
			lastIndex = arr.lastIndexOf(elem);
			length = lastIndex - index + 1
			arr.splice(index, length);	
			obj[elem] = length;
		}
		
		for (var prop in obj)
		{
			document.write(prop + " : " + obj[prop] + "<br>");	
		}
		
	</script>
Ответить с цитированием
  #4 (permalink)  
Старый 03.02.2016, 15:02
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

diga,
А почему у вас массив а, в, с... а не 1, 2, 3... - или, еще лучше, имена файлов?
А для создания элементов можно воспользоваться document.createElement(тип)
см. http://javascript.ru/tutorial/DOM/modify
Ответить с цитированием
  #5 (permalink)  
Старый 03.02.2016, 15:10
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

может использовать оператор += ?

for (var i=0;i<Arr.length; i=i+1)
            {
                var pc = document.getElementById("my_img");
                if (Arr[i]=='a') pc.innerHTML+="<img src='img/1.png' alt='a'>";
                else if (BlackArr[i]=='b') pc.innerHTML+="<img src='img/2.png' alt='b'>";
                else if (BlackArr[i]=='c') pc.innerHTML+="<img src='img/3.png' alt='c'>";
                else if (BlackArr[i]=='d') pc.innerHTML+="<img src='img/4.png' alt='d'>";
                else if (BlackArr[i]=='e') pc.innerHTML+="<img src='img/5.png' alt='e'>";
Ответить с цитированием
  #6 (permalink)  
Старый 03.02.2016, 15:47
Аспирант
Отправить личное сообщение для diga Посмотреть профиль Найти все сообщения от diga
 
Регистрация: 13.01.2016
Сообщений: 57

Сообщение от Dilettante_Pro Посмотреть сообщение
diga,
А почему у вас массив а, в, с... а не 1, 2, 3... - или, еще лучше, имена файлов?
А для создания элементов можно воспользоваться document.createElement(тип)
см. http://javascript.ru/tutorial/DOM/modify
на самом деле у меня имена файлов, просто я так написал для примера
Ответить с цитированием
  #7 (permalink)  
Старый 03.02.2016, 15:50
Аспирант
Отправить личное сообщение для diga Посмотреть профиль Найти все сообщения от diga
 
Регистрация: 13.01.2016
Сообщений: 57

Сообщение от EmperioAf
может использовать оператор += ?
тогда я не смогу использовать повторение элементов и в результате получу:
"изображение 1"
"изображение 1"
"изображение 2"
....
а в моем случае надо:
"изображение 1""X2"
"изображение 2""X1"
Ответить с цитированием
  #8 (permalink)  
Старый 04.02.2016, 08:23
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

var imagesHTML = {
        a: "<img src='img/1.png' alt='a'>",
        b: "<img src='img/2.png' alt='b'>",
        c: "<img src='img/3.png' alt='c'>"
    };

    var forDraw = ['a', 'a', 'a', 'b', 'b', 'c'];
    var data = forDraw.reduce(function (result, imageKey) {
        if (!result[imageKey]) {
            result[imageKey] = {html: imagesHTML[imageKey], count: 1};
        } else {
            result[imageKey].count++;
        }
        return result;
    }, {});

    var html = '';

    Object.keys(data).forEach(function (key) {
        html += data[key].html;
        if (data[key].count > 1) {
            html += 'X' + data[key].count;
        }
        html += '\n';
    });

    alert(html);

Последний раз редактировалось tsigel, 04.02.2016 в 08:39.
Ответить с цитированием
  #9 (permalink)  
Старый 04.02.2016, 12:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

diga,
<div class="my_img"></div>

<script>
function fn(d) {
    var b = 1,
        e = 1,
        a = "",
        c = document.querySelector(".my_img");
    d.forEach(function(f, c) {
        f != d[++c] ? (a += "<img src='img/" + e + ".png' alt='" + f + "'>", e++, a += "<br>X" + b + "<br>", b = 1) : b++
    });
    c.insertAdjacentHTML("beforeBegin", a)
};
 var arr = ['a','a','a','b','b','c'] ;
 fn(arr)
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение изображений в JavaScript SSS434 Events/DOM/Window 1 05.01.2016 14:43
Преобразование из текстовых данных в красивое отображение материала AlexGraur Общие вопросы Javascript 0 08.08.2015 15:13
Отображение изображений при аплоаде Ioan31 Элементы интерфейса 3 02.12.2012 21:05
jquery-gp-gallery.js - разное отображение подгружаемых изображений frutality jQuery 1 09.09.2012 18:15
Прокрутка изображений gen552 Элементы интерфейса 6 01.04.2011 13:11