Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Кнопочка ЗАПОМНИТЬ (https://javascript.ru/forum/dom-window/5286-knopochka-zapomnit.html)

Hazard 02.10.2009 14:27

Кнопочка ЗАПОМНИТЬ
 
Здравствуйте, форумчане. :)

Обращаюсь за помощью к спецам, поскольку в яве не очень силен (а заодно может кому-то и пригодится в дальнейшем эта тема).

На странице http://www.dream-land.ru/catalog/beds/all_beds_test.php на трех верхних картинках мы видим небольшое меню - 3 иконки - Распечатать, Увеличить, Запомнить. С первыми двумя справился, речь пойдет о третьей. Задача следующая: необходимо, чтобы при клике иконка выделялась (подгружается вторая иконка другого цвета), а при последующем клике выделение снималось и загружалась опять же первая иконка. Таким образом пользователь мог бы запомнить интересующий его товар в каталоге. Когда я тестировал вышеуказанное на одной иконке все работало, как только поставил идентичные иконки на другие товары начались глюки :blink: (попробуйте покликать по иконкам). Видимо не разобрался с ID-шками для иконок (как их поставить для каждой?).

Вот код:
<div style="RIGHT: 14px; POSITION: absolute; TOP: 0px; cursor: hand;" alt="Запомнить" title="Запомнить">
<script type="text/javascript">
var apict1 = new Array('/catalog/beds/images/ico/vg.gif'); // исходные файлы
var apict2 = new Array('/catalog/beds/images/ico/vo.gif'); // заменяемые файлы
var aflag = new Array(apict1.length); // массив флагов
/* Формирование строки тегов, описывающих изображения */
var xstr = '';
for(i = 0; i < apict1.length; i++){
xstr += '<img id="i'+i+'" src="'+apict1[i]+'" onclick="imgchange(this.id);">';
}
document.write(xstr);
function imgchange(XZid){
var xid = XZid;
var n = eval(xid.replace('i','')); // выделяем номер элемента
if(aflag[n]){
document.getElementById(xid).src = apict1[n];
} else {
document.getElementById(xid).src = apict2[n];
}
aflag[n] =!aflag[n];
}
</script></div>

Итак, вопросы: :help:
1). Как избавиться от глюков и сделать так, чтобы каждую иконку можно было выделить и затем снять с нее выделение?
2). Как избавиться от необходимости каждый раз прописывать весь громоздкий шрифт для каждой иконки и тем самым нагружать код?
3). Очень важный вопрос. Допустим пользователь выбрал несколько интересных ему товаров (запонив их нажатием на иконки) и ушел со страницы каталога. Как добиться того, чтобы запомненные иконки оставались нажатыми при возврате к странице?

Заранее спасибо, очень надеюсь на помощь! :thanks:

Gozar 02.10.2009 19:11

Ответы:
1. присвоить каждой иконке уникальный id (тут для фантазии поле непаханное)
2. присвоить css class
3. http://javascript.ru/unsorted/storage

Hazard 03.10.2009 15:47

Gozar, спасибо за проявленный интерес!
По поводу 1-ого и 2-ого можно пример?

Gozar 03.10.2009 23:05

Боюсь что я не смогу Вам ничем помочь, я не посмотрел внимательно код который Вы привели(код нужно форматировать для лучшей читабельности, на этом форуме есть спец.теги, для этого).
Вам нужно учить язык!

Дальше я тут в подробностях расписывал что нужно менять в приведенном коде, но понял, что это выше моих сил, учите язык.

Hazard 05.10.2009 10:39

Может эти вещи можно как-то по другому решить?
Никто не может помочь?


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