[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переключение между тремя состояниями ссылки
skolozhabskiy
добрый день,

Задача: необходимо найти решение как переключаться между тремя вариантами одной ссылки:

1. "Добавить к сравнению" - по умолчанию
2. "Добавлен к сравнению"
3. "Сравнить"

Вопрос:

как сделать, чтобы при перезагрузке страницы состояние ссылки сохранялось по последней установке(например, если "Добавлен к сравнению", то после перезагрузки состояние ссылки было ""Добавлен к сравнению"", а если "Сравнить", то "Сравнить"?

Спасибо



Спустя 3 часа, 49 минут, 15 секунд (17.07.2012 - 21:14) bodja написал(а):
Цитата
1. можно ли подобную задачу решить проще? что необходимо поправить в коде.

можно ,но менять прийдется все rolleyes.gif
Цитата
2. как сделать, чтобы при перезагрузке страницы состояние ссылки сохранялось по последней установке

Если куки неугодили ,тогда window.name как вариант,ну или сессии на серваке держать.

Спустя 5 минут, 44 секунды (17.07.2012 - 21:20) skolozhabskiy написал(а):
bodja

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

спасибо

Спустя 38 минут, 51 секунда (17.07.2012 - 21:59) bodja написал(а):
Цитата
спасибо за ответ, но что вы имеете ввиду "можно, но менять придется все"? что именно и по какому пути решение задачи видите вы? можно подробнее.

Не хочу разводить холивар.Тут много любителей квери. biggrin.gif
Причем даже если писать на чистом JS тут тоже могут найтись защитники событийного подхода.
Мое решение - это обьект на каждый
Цитата
<div id="product-compare-links-182" class="compare_links"><a id="tocomparison-182" class="compare" href="javascript:void(0)" data-compare-product="182" data-compare="false">Добавить к сравнению</a></div>

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

Спустя 8 минут, 47 секунд (17.07.2012 - 22:07) skolozhabskiy написал(а):
мне не совсем понятно что клонировать, там привязка к конкретному id и три состояния и два разных класса. спасибо

Спустя 12 часов, 56 минут, 42 секунды (18.07.2012 - 11:04) bodja написал(а):
Хорошо,обьясняю на пальцах :D

ХТМЛ
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>
Untitled Document</title>
<script
src="./script.js" type="text/javascript"></script>
</head>
<body>

</body>
</html>


яваскрипт
function Product() {
this.mode = 0;
this.div = document.createElement('div');
this.div.className = 'compare_links';
this.div.style.cursor = 'pointer';
this.a = document.createElement('a');
this.a.className = 'compare';
this.a.innerHTML = 'Добавить к сравнению';
this.div.appendChild(this.a);
this.div.onclick = function (o) {
return function () {
switch (o.mode) {
case 0:
o.a.innerHTML = 'Сравнить';
o.mode = 1;
break;
case 1:
o.a.innerHTML = 'Сравнили уже';
o.mode = 2;
break;
case 2:
o.a.innerHTML = 'Добавить к сравнению';
o.mode = 0;
}
}
}

(this);
document.body.appendChild(this.div);
}

window.onload = function () {
var pro = [];
for (var i = 0; i < 10; i++) {
pro[i] = new Product();
}
}


Что сделали?
Написали класс Product и наследовали в нем элементы div и a ,добавили к ним классы или что еще нам нужно,повесили событие onclick на div и через замыкание получили доступ к обьекту из DOM.
В этом же событии разруливаем разные состояния кнопки.
И в конце располагаем,что намутили в документе.

Далее по загрузке создаем 10 обьектов ,можно 100 :D ,клацаем :D :D :D
Как заметили ,идешников нет ,элементы созданы в классе ,соответственно мы можем получить доступ к ним через нужный нам обьект,а не вычислять их через селекторы постоянно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.