Javascript.RU

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

Помогите исправить Код
Выдаёт ошибку на 9й строке (Expected '{' and instead saw '$'. Пишет Don't make functions within a loop. и в 10 строке: Missing "use strict" statement.)
/* Массив с данными */
var data = [
    {class: 'v1', img: '1.png', material: 'Белый'},
    {class: 'v2', img: '2.png', material: 'Жёлтый'},
    {class: 'v3', img: '3.png', material: 'Красный'},
    // и т.д.
];
/* Цикл, формирующий обработчики клика на основании массива данных */
for (var i = 0; i < data.length; i++)
    $("."+data[i].class).click(function () {
        $("div.box").html('<img src="img/zal/color-big/1/'+data[i].img+'">');
        $("div.material").html(data[i].material);
			  $(".view").show();
        $(".view").html('<a href="img/zal/texturi/1/'+data[i].img+'" class="fancybox" rel="textura"><span class="icon-view"></span></a>');
    });


Изначально был такой Код:
/* Текстуры и Атрибуты ссылок */
	var v1la = "img/zal/color-big/1/";
	var v1l = "img/zal/texturi/1/";
	var v1atr = "class='fancybox' rel='textura'><span class='icon-view'></span>";
	/* Материалы 1го Варианта */
	$(".v1").click(function () {
		$("div.box").html('<img src="'+v1la+'1.png">');
		$("div.material").html("Материал 1");
		$(".view").show();
		$(".view").html('<a href="'+v1l+'1.png" '+v1atr+'</a>');
	});
	$(".v2").click(function () {
		$("div.box").html("<img src='img/zal/color-big/1/2.png'>");
		$("div.material").html("Материал 2");
		$(".view").show();
		$(".view").html('<a href="'+v1l+'2.png" '+v1atr+'</a>');
	});
	$(".v3").click(function () {
		$("div.box").html("<img src='img/zal/color-big/1/3.png'>");
		$("div.material").html("Материал 3");
		$(".view").show();
		$(".view").html('<a href="'+v1l+'3.png" '+v1atr+'</a>');
	});

Последний раз редактировалось exid, 23.01.2017 в 21:12.
Ответить с цитированием
  #2 (permalink)  
Старый 23.01.2017, 21:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

И зачем вообще этот цикл?

<html>
<body>
<div id="v">
    <span class="v">Btn</span>
    <span class="v">Btn</span>
    <span class="v">Btn</span>
</div>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
var data = [
    {class: 'v1', img: '1.png', material: 'Белый'},
    {class: 'v2', img: '2.png', material: 'Жёлтый'},
    {class: 'v3', img: '3.png', material: 'Красный'},
    // и т.д.
];

$(function() {
    $('#v').on('click', 'span', function() {
        var i = $(this).index();
        alert(data[i].img)
    })
});
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 23.01.2017, 23:08
Новичок на форуме
Отправить личное сообщение для exid Посмотреть профиль Найти все сообщения от exid
 
Регистрация: 23.01.2017
Сообщений: 3

А при чём здесь Alertы?
Ответить с цитированием
  #4 (permalink)  
Старый 23.01.2017, 23:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

exid,
вам показали как убрать цикл, а вместо алерт вам нужно добавить строки 11-14 из первого кода
Ответить с цитированием
  #5 (permalink)  
Старый 23.01.2017, 23:33
Новичок на форуме
Отправить личное сообщение для exid Посмотреть профиль Найти все сообщения от exid
 
Регистрация: 23.01.2017
Сообщений: 3

А вы не могли бы на моём примере сделать?
Я просто в Яве не силён пока.
Сейчас напортачу и буду задавать ещё кучу вопросов
Ответить с цитированием
  #6 (permalink)  
Старый 23.01.2017, 23:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

exid,
не могу, пример вам показан как образец, только вам достуна информация как должно быть на самом деле.
запомните пример на будущее.
возможно в вашем цикле не хватает скобок {}
for (var i = 0; i < data.length; i++) {
//код
}

Последний раз редактировалось рони, 24.01.2017 в 00:04.
Ответить с цитированием
  #7 (permalink)  
Старый 23.01.2017, 23:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

exid,
если обработку щелчка по элементам делегировать родителю, то в обработчике можно получить индекс этого элемента, по которому уже получить необходимое из объекта. HTML код нужно показывать, а иначе не понять с чем вы там экспериментируете.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать код события onmouseover, onmouseout. aggressive Элементы интерфейса 2 29.06.2015 13:07
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
Помогите исправить код Apelcun77 Общие вопросы Javascript 6 15.11.2013 23:06
Помогите исправить функцию поиска слова opeen_door Общие вопросы Javascript 3 31.10.2011 21:44
Код калькулятора на JS. помогите с ошибкой! kirill.psl Общие вопросы Javascript 9 26.08.2010 11:38