Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Прописать переменные в названии атрибутов (https://javascript.ru/forum/misc/62818-propisat-peremennye-v-nazvanii-atributov.html)

kupidon 02.05.2016 22:08

Прописать переменные в названии атрибутов
 
Прошу помощи. Никак не могу добиться, чтобы в название атрибута прописать переменную...И вообще: можно ли самому придумывать названия атрибутов?
В переменную
arr[1] попадает текст "pur".
arr[2] =0
arr[3] =1

arr = $(this).attr('class').split( " " );
ddd=arr[1]+'x';
ggg=arr[1]+'y';
$(".add-cart-style").attr({ "'+ddd+'" : arr[2], "'+ggg+'" : arr[3] });


мне надо чтобы на выходе было:

<a class="add-cart-style" tid="1111157" purx="0" pury="1"></a>

ps InvalidCharacterError: String contains an invalid character :(

рони 02.05.2016 22:57

kupidon,
для этого есть data(), создайте пустой обьект предварительно и пропишите нужные свойства
obj[ddd]=arr[2];

kupidon 05.05.2016 19:45

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



параметры li имеют такой класс:
<li class="parametr par0 0 0 1  "><a href="#">&nbsp;12&nbsp;</a></li>


$(".parametr").click(function(){
arr = $(this).attr('class').split( " " );
fff="."+arr[1];
//alert(arr[1]);
arr = $(this).attr('class').split( " " );
$(fff).css("background-color","#ffffff");
$(this).css("background-color","#0080ff");
ddd=arr[1]+'x';
ggg=arr[1]+'y';
$(".add-cart-style").attr({ "'+ddd+'" : arr[2], "'+ggg+'" : arr[3] });
});


пожалуйста помогите реализовать это..
Еще, пожалуйста подскажите как сделать чтобы пока по всем переменным не сделали выбор- кнопка ДОБАВИТЬ не была enabled ?
Заранее Большое спасибо за ваше внимание.

kupidon 05.05.2016 19:45

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



параметры li имеют такой класс:
<li class="parametr par0 0 0 1  "><a href="#">&nbsp;12&nbsp;</a></li>


$(".parametr").click(function(){
arr = $(this).attr('class').split( " " );
fff="."+arr[1];
//alert(arr[1]);
arr = $(this).attr('class').split( " " );
$(fff).css("background-color","#ffffff");
$(this).css("background-color","#0080ff");
ddd=arr[1]+'x';
ggg=arr[1]+'y';
$(".add-cart-style").attr({ "'+ddd+'" : arr[2], "'+ggg+'" : arr[3] });
});


пожалуйста помогите реализовать это..
Еще, пожалуйста подскажите как сделать чтобы пока по всем переменным не сделали выбор- кнопка ДОБАВИТЬ не была enabled ?
Заранее Большое спасибо за ваше внимание.

рони 05.05.2016 19:50

kupidon,
не осилил, подожду переводчика.

kupidon 05.05.2016 20:22



Есть свойства товара ( размеры, цвет...) в каждом есть параметры ( под тегами <li>)

<ul class="ul-parametr"><strong>
<li class="parametr par0 0 0 0  "><a href="#">10</a></li>
<li class="parametr par0 0 0 1  "><a href="#">12</a></li>
<li class="parametr par0 0 0 2  "><a href="#">14</a></li>
<li class="parametr par0 0 0 3  "><a href="#">16</a></li> </strong></ul>
......
......
<ul class="ul-parametr"><strong> 
<li сlass="parametr par1 1 1 0  "><a href="#">белый</a></li>
<li class="parametr par1 1 1 1  "><a href="#">черный</a></li>
<li class="parametr par1 1 1 2  "><a href="#">синий</a></li> </strong></ul>


Свойств может быть как два так и три,так и одно. Я их вывожу из БД и присваиваю им такие классы, чтобы отличать.

Далее нажимаю на первый ряд переменных ( выбираю размер) , и это значение должно прописаться в кнопки "ДОБАВИТЬ", в атрибутах или классе, чтобы потом смог передать его в обработчик.
Далее нажимаю на второй ряд переменных ( выбираю цвет) , и это значение должно прописаться в кнопки "ДОБАВИТЬ", в атрибутах или классе, чтобы потом смог передать его в обработчик.
И так нажимаю по всем свойствам. Если свойств два- то при выборе второго - должна активироваться кнопка ДОБАВИТЬ ( с уже прописанными в ней параметрами, для передачи в обработчик)

часть кода js что-то вроде этого:
$(".parametr").click(function(){
arr = $(this).attr('class').split( " " );
fff="."+arr[1];
ddd=arr[1];
ggg=arr[1];
$(fff).css("background-color","#ffffff");
$(this).css("background-color","#0080ff");
$(".add-cart-style").attr( ddd , arr[2] );
??????
??????
??????  
});


:-?

laimas 06.05.2016 07:42

Цитата:

Сообщение от kupidon
class="parametr par0 0 0 0 "

Это уму не постижимо, характеристики хранятся где - в базе, а значит, по уму, они имеют уникальный идентификатор. Что же вам мешает поместить в LI LABEL а в нее скртый флажок имеющий в своем значении идентификатор характеристики?


Часовой пояс GMT +3, время: 10:28.