Изменить состояние нескольких Div и запонить их для пользователя
Добрый день уважаемые форумчане. Только начал изучать Javascript и столкнулся с задачей итак
1- у нас имеется 2 Div-а : первый необходимо сделать невидимым , display - none, а второму изменить padding. 2 - Всё это необходимо активировать одним событием button onclick. Событие должно отрабатывать в обе стороны. Display none-visible , padding 1px-2px 3 - состояние обоих Div необходимо запомнить в печеньках. Господа кто может объяснить чайнику как это делается. С куками уже 3 день вожусь всё как-то очень печально и медленно. |
Цитата:
http://htmlbook.ru/html5/storage |
Цитата:
http://ruseller.com/lessons.php?id=593&rub=28 |
запись смена печенек удалась, теперь шаг 2 сменна padding
Итак, с cookiсами разобрались
Код:
|
Цитата:
obj.style.paddingLeft='-275px'; http://htmlbook.ru/css/padding-left |
Добавляю следующее
function changePaddingPlus() {
var paddingPlus = "25px";
document.getElementById("paddingdiv").style.paddingLeft = paddingPlus;
};
function changePaddingMinus() {
var paddingMinus = "275px";
document.getElementById("paddingdiv").style.paddingLeft = paddingMinus;
}
и естесвенно меняю button
</head>
<body>
<div id="toolo"> text 1
<button class="toggle" id="hide" onclick="changePaddingMinus()">Open</button>
</div>
<div id="toolo2">
text 2
<button class="toggle" id="show" onclick="changePaddingPlus()">Hide</button>
</div>
<div class="paddingchange" style="padding:25px 35px 0 275px" id="paddingdiv">
Этот див при нажатии кнпки Hide должен сдвигать паддинг на лево на '-275px'
А при нажатии на Show возвращать всё как было
</div>
</body>
</html>
Понимаю что это громоздко и неправильно, вернее было-бы засунуть всё в одну функцию с проверкой : 1 - если указано значение paddingLeft в кукисах, взять его 2 - если не указано значение paddingLeft , назначить его 275px, сохранить это в кукисах 3 - при обработки кнопки Hide - установить значение paddingLeft = 25px и сохранить его в кукисах 4 - при обработки кнопки Show - установить значение paddingLeft = 275px и сохранить его в кукисах но что-то у меня не очень получается. Есть идеи ? |
Цитата:
|
Реализованно довольно громоздко
Это слепок с настоящего сайта, там короче очень нервный верстальщик который не намерен переделывать сайт в резиновый. Так что у некоторых Div очень странные параметры )) Выкручиваюсь как могу.
Добавлено 16.06.2015 17:57 Решено
<title>Demo mplugnjs</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-2.1.3.js'></script>
<script type='text/javascript' src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script type="text/javascript" >
$(function () {
var state = $.cookie('state');
var open = state == "open";
$("#toolo").toggle(open);
$("#toolo2").toggle(!open);
$(".toggle").on("click", function (e) {
e.preventDefault();
var open = this.id == "show";
console.log(open, this.id)
$("#toolo").toggle(open);
$("#toolo2").toggle(!open);
$.cookie('state', open ? "open" : "closed", { expires: 3 });
});
});
$(document).ready(function () {
var paddingCookie = $.cookie('padding');
if (paddingCookie != null) {
document.getElementById('paddingdiv').style.paddingLeft = paddingCookie;
}
else if (paddingCookie == null || undefined) {
document.getElementById('paddingdiv').style.paddingLeft = "275px";
}
alert(paddingCookie);
});
function changePaddingPlus() {
var paddingPlus = "25px";
document.getElementById("paddingdiv").style.paddingLeft = paddingPlus;
$.cookie('padding', "25px", { expires: 3 });
};
function changePaddingMinus() {
var paddingMinus = "275px";
document.getElementById("paddingdiv").style.paddingLeft = paddingMinus;
$.cookie('padding', "275px", { expires: 3 });
}
</script>
</head>
<body>
<div id="toolo">
text 1
<button class="toggle" id="hide" onclick="changePaddingMinus()">Open</button>
</div>
<div id="toolo2">
text 2
<button class="toggle" id="show" onclick="changePaddingPlus()">Hide</button>
</div>
<div id="paddingdiv" style="padding:35px 0px 0px 275px;">
Этот див при нажатии кнпки Hide должен сдвигать паддинг на лево на '-275px'
А при нажатии на Show возвращать всё как было
</div>
</body>
<script type="text/javascript">
</script>
</html>
ну и вот здесь можно посмотреть как пример работает . Господа буду благодарен за идеи оптимизации кода. |
| Часовой пояс GMT +3, время: 17:04. |