Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   поочередное сохранение (https://javascript.ru/forum/dom-window/64717-poocherednoe-sokhranenie.html)

кирикала 31.08.2016 14:51

поочередное сохранение
 
есть две переменные localStorage перваая count0 вторая count1
как сохранять в них данные поочередно первый клик в count0 второй в count1 третий пересохранить count0 четвертый пересохранить count1 и т.д.
у мя на dive стоит onClick='give(this.id);'
вот фукция ниже не работает =(

function give(val) {
switch (true) {
   case (val=='boxA'):
if (i == 1) {
localStorage.setItem('count0', 'boxA'); var i = 0;
} else {
localStorage.setItem('count1', 'boxA'); var i = 1;
}
   break;
   case (val=='boxB'):
if (i == 1) {
localStorage.setItem('count0', 'boxB'); var i = 0;
} else {
localStorage.setItem('count1', 'boxB'); var i = 1;
}
   break;
   case (val=='boxC'):
if (i == 1) {
localStorage.setItem('count0', 'boxC'); var i = 0;
} else {
localStorage.setItem('count1', 'boxC'); var i = 1;
}
   break; 
}


что не так? как правильно задать эту переменную которая выступает мигалкой по типу или значение 1 или 0 ? или оно вообще тут не нужна? как тогда организовать проверку условия когда сохранять в первую переменную когда во вторую?

Strongman 31.08.2016 14:59

Что-то не так по-моему switch пишется:
switch(val) {
   case 'boxA':

Переделай все кейсы и выкладывай тут последнюю версию:).
Насчет кликов я бы сделал так. Заведи счетчик кликов.
var Counter=false;/*bool value*/
Object.onClick = function()
{
if(Counter)
{/*0 или любое четное нажатие*/}
else
{/*1 или любое нечетное нажатие*/}
Counter != Counter;/*Инвертирование значения Counter*/
}

ksa 31.08.2016 15:00

Цитата:

Сообщение от кирикала
как правильно задать эту переменную которая выступает мигалкой по типу или значение 1 или 0 ?

Такую информацию можно хранить в том же localStorage...

кирикала 31.08.2016 15:22

ksa, ну с этим более понятно, и да действительно норм помогло спс =)
strongman, чето в данной ситуации счетчик оказался более сложным имхо хз хз

ksa 31.08.2016 15:26

При использовании строковых констант с циферкой удобнее вести инкремент цифры и остаток от деления.
Т.о. можно обойтись вовсе без условия "куда писать". ;)

Strongman 31.08.2016 15:51

Так у Вас уже сделан этот механизм, про который я говорил. Только не нужно var писать везде(это я про строки 5, 7, 12, 14, 19, 21). Просто зведите глобальную переменную i.
Цитата:

Сообщение от кирикала
strongman, чето в данной ситуации счетчик оказался более сложным имхо хз хз

- а что тут сложного, ничего сложного нет. Я вообще хотел сначала сделать так:
var Count = 0;
Object.onClick = function()
{
if(Count%2 == 0)
{/*0 или любое четное нажатие*/}
else
{/*1 или любое нечетное нажатие*/}
}

Ну или как-то так, я думаю принцип ясен.

кирикала 31.08.2016 15:52

а еще вопрос а как убрать отображение Undefined на странице?? ну еси переменной нету то понятно зачем об етом писать) некий мб аналог ПХПшного error_reporting(0);

кирикала 31.08.2016 15:53

тяжко понимать JS после PHP ппц(

ksa 31.08.2016 15:54

Цитата:

Сообщение от кирикала
как убрать отображение Undefined на странице?

Пример такого "отображения" приведи...

кирикала 31.08.2016 15:55

или тут надо постоянно проверять существует если да => тогда выводим а если нет то пусто

кирикала 31.08.2016 15:57

<script>
function give(val) {
switch (true) {
   case (val=='boxA'):
if (localStorage.getItem('i') == 1) {
localStorage.setItem('count0', 'boxA'); localStorage.setItem('i', '0');
} else {
localStorage.setItem('count1', 'boxA'); localStorage.setItem('i', '1');
}
   break;
   case (val=='boxB'):
if (localStorage.getItem('i') == 1) {
localStorage.setItem('count0', 'boxB'); localStorage.setItem('i', '0');
} else {
localStorage.setItem('count1', 'boxB'); localStorage.setItem('i', '1');
}
   break;
   case (val=='boxC'):
if (localStorage.getItem('i') == 1) {
localStorage.setItem('count0', 'boxC'); localStorage.setItem('i', '0');
} else {
localStorage.setItem('count1', 'boxC'); localStorage.setItem('i', '1');
}
   break; 
}
if (localStorage.getItem('count0') == 'boxA') {var bbb = "<div class='drag' id='boxA'></div>"} else if (localStorage.getItem('count0') == 'boxB') {var bbb = "<div class='drag' id='boxB'></div>"} else if (localStorage.getItem('count0') == 'boxC') {var bbb = "<div class='drag' id='boxC'></div>"}
if (localStorage.getItem('count1') == 'boxA') {var aaa = "<div class='drag' id='boxA'></div>"} else if (localStorage.getItem('count1') == 'boxB') {var aaa = "<div class='drag' id='boxB'></div>"} else if (localStorage.getItem('count1') == 'boxC') {var aaa = "<div class='drag' id='boxC'></div>"}
document.getElementById("big").innerHTML = bbb + aaa;}

function someFunc(){
var timestake = document.getElementById("timestake").value;
if (localStorage.getItem('count0') == "boxA") {var stake0 = timestake;} else if (localStorage.getItem('count0') == "boxB") {var stake1 = timestake;} else if (localStorage.getItem('count0') == "boxC") {var stake2 = timestake;}
if (localStorage.getItem('count1') == "boxA") {var stake0 = timestake;} else if (localStorage.getItem('count1') == "boxB") {var stake1 = timestake;} else if (localStorage.getItem('count1') == "boxC") {var stake2 = timestake;}
document.getElementById("textstake").innerHTML= stake0 + "<br>" + stake1 + "<br>" + stake2;
localStorage.removeItem('count0');localStorage.removeItem('count1');localStorage.removeItem('i');document.getElementById("big").innerHTML = " ";
}
</script>

явно конечно с точки зрения веб программиста код кривой

ksa 31.08.2016 15:57

Цитата:

Сообщение от кирикала
или тут надо постоянно проверять существует если да

Такой вот вариант есть...

var val;
alert(val || 'Пусто...');

ksa 31.08.2016 15:58

Цитата:

Сообщение от кирикала
явно конечно с точки зрения веб программиста код кривой

Так распрямляй! :D

кирикала 31.08.2016 16:03

крч спс ща буду разбираться

Strongman 01.09.2016 03:22

Ну да, только это и хотел сказать.
if(x != undefined) {/*x = defined;*/}
else {/*x = undefined;*/}

Strongman 01.09.2016 04:41

О, ниче я прикольный метод нашел в jQuery: .toggle(). Ищите, пожалуйста, в Интернете.

warren buffet 02.09.2016 07:42

Цитата:

Сообщение от кирикала
JS после PHP ппц


PHP - это же типа framework. На JS да, надо каждый раз проверять или пиши нормальное приложение с централизованным многоуровневым обработчиком исключений.

К слову профессора обосрали применение try catch в другой теме, а между тем оно самое.

warren buffet 02.09.2016 07:46

Вложений: 1
Цитата:

Сообщение от кирикала
явно конечно с точки зрения веб программиста код кривой

Нормальный говнокод. А php десктоп что ли?


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