Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.12.2015, 12:44
Новичок на форуме
Отправить личное сообщение для Yaroslav222333 Посмотреть профиль Найти все сообщения от Yaroslav222333
 
Регистрация: 03.12.2015
Сообщений: 5

Обратный остчет
есть вот такой скрипт
define("countdown",[],function(){var e={start:20,storage:!0,init:function(){var t,r,n,i;this.$el=$(".countdown"),this.$descr=$(".countdown-descr"),this.placesTotal=$(".places-total"),this.$place1=$(".place-1"),this.$place2=$(".place-2"),this.$place3=$(".place-3");try{localStorage.setItem("item","text"),localStorage.removeItem("item")}catch(a){e.storage=!1}localStorage.countdownValue&&localStorage.countdownDate?(this.value=localStorage.countdownValue,this.$el.html(this.value),n=new Date(localStorage.countdownDate),r=new Date,i=Math.round(Math.abs((r.getTime()-n.getTime())/864e5)),i>0&&this.value>3&&(i+1>this.value&&(i=1),this.value-=i,this.save()),localStorage.setItem("countdownDate",new Date)):(this.value=this.start,this.save()),this.value>20&&(t=setInterval(function(){e.value>20?(e.value--,localStorage.setItem("countdownDate",new Date),e.save()):clearInterval(t)},200)),this.saveDescr()},save:function(){localStorage.setItem("countdownValue",this.value),this.$el.html(this.value),this.value===this.start?this.placesTotal.hide():this.placesTotal.show()},reducePlaces:function(){for(var e,t=this.$place1.html(),r=this.$place2.html(),n=this.$place3.html(),i=!1;0==i;)if(e=Math.round(3*Math.random()+1),1==e){if(3>t)continue;this.$place1.html(--t),i=!0}else if(3==e){if(3>n)continue;this.$place3.html(--n),i=!0}else if(3==e||4==e){if(3>r)continue;this.$place2.html(--r),i=!0}},saveDescr:function(){this.value<3&&this.$descr.html("места")}};return e})


что мне нужно изменить чтоб отсчет был по три каждый день от 20ти. сейчас почему то отсчет по 1 в день...
Ответить с цитированием
  #2 (permalink)  
Старый 04.12.2015, 14:12
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Что означает
Сообщение от Yaroslav222333
по три каждый день от 20ти
?
Ответить с цитированием
  #3 (permalink)  
Старый 04.12.2015, 15:14
Новичок на форуме
Отправить личное сообщение для Yaroslav222333 Посмотреть профиль Найти все сообщения от Yaroslav222333
 
Регистрация: 03.12.2015
Сообщений: 5

есть некое число 20 (количество пряников). Нужно чтобы каждый день от него отнималось 3(пряника). Когда приников нестанет, нужно чтобы цикл повторился, сейчас отнимается по одному каждый день. Я в javascript плохо очень разбираюсь, поэтому трудно самому догадаться что да как в этом скрипте.
Ответить с цитированием
  #4 (permalink)  
Старый 04.12.2015, 16:52
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Yaroslav222333,
пробуйте, может получится
<script>
    define("countdown", [], function () {
        var e = {
            start: 20, storage: !0, init: function () {
                var t, r, n, i;
                this.$el = $(".countdown"), this.$descr = $(".countdown-descr"), this.placesTotal = $(".places-total"), this.$place1 = $(".place-1"), this.$place2 = $(".place-2"), this.$place3 = $(".place-3");
                try {
                    localStorage.setItem("item", "text"), localStorage.removeItem("item")
                } catch (a) {
                    e.storage = !1
                }
                localStorage.countdownValue && localStorage.countdownDate ? (this.value = localStorage.countdownValue,
                        this.$el.html(this.value),
                        n = new Date(localStorage.countdownDate),
                        r = new Date,
                        i = Math.round(Math.abs((r.getTime() - n.getTime()) / 864e5)),
                        i > 0 && this.value > 3 && (i + 1 > this.value && (i = 1),
                        this.value -= i+2,
                        this.save()),
                        localStorage.setItem("countdownDate", new Date)) : (this.value = this.start, this.save()),
                        this.value > 20 && (t = setInterval(function () { e.value > 20 ? (e.value = e.value - 3, localStorage.setItem("countdownDate", new Date), e.save()) : clearInterval(t)
                }, 200)), this.saveDescr()
            }, save: function () {
                localStorage.setItem("countdownValue", this.value), this.$el.html(this.value), this.value === this.start ? this.placesTotal.hide() : this.placesTotal.show()
            }, reducePlaces: function () {
                for (var e, t = this.$place1.html(), r = this.$place2.html(), n = this.$place3.html(), i = !1; 0 == i;)if (e = Math.round(3 * Math.random() + 1), 1 == e) {
                    if (3 > t)continue;
                    this.$place1.html(--t), i = !0
                } else if (3 == e) {
                    if (3 > n)continue;
                    this.$place3.html(--n), i = !0
                } else if (3 == e || 4 == e) {
                    if (3 > r)continue;
                    this.$place2.html(--r), i = !0
                }
            }, saveDescr: function () {
                this.value < 3 && this.$descr.html("места")
            }
        };
        return e
    })

</script>

Последний раз редактировалось Mess4me, 04.12.2015 в 16:54.
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2015, 16:03
Новичок на форуме
Отправить личное сообщение для Yaroslav222333 Посмотреть профиль Найти все сообщения от Yaroslav222333
 
Регистрация: 03.12.2015
Сообщений: 5

в общем, поставил, но так и не заработало, -1 пряник каждый день... посоветовали вот такое решение
define("countdown", [], 
function () {
        var Countdown = {
        start: 17,
        storage: true,
        init: function () {
            var interval,
                now,
                then,
                diff,
                random,
                placeValue;

            this.$el = $(".countdown");
            this.$descr = $(".countdown-descr");
            this.placesTotal = $(".places-total");

            this.$place1 = $(".place-1");
            this.$place2 = $(".place-2");
            this.$place3 = $(".place-3");
            
            try {
                localStorage.setItem("item", "text");
                localStorage.removeItem("item");
            } catch (e) {
                Countdown.storage = false;
            }

            if (localStorage.countdownValue && localStorage.countdownDate) {
                this.value = localStorage.countdownValue;
                this.$el.html(this.value);

                then = new Date(localStorage.countdownDate);
                now = new Date();
                diff = Math.round(Math.abs((now.getTime() - then.getTime()) / 8.64e7 ));


                if (diff > 0 && this.value > 3) {
                    if (diff + 1 > this.value) {
                        diff = 1;
                    }

                    this.value -= diff;
                    this.save();
                }

                localStorage.setItem("countdownDate", new Date());
            }
            else {
                this.value = this.start;
                this.save();
            }

            if (this.value > 17) {
                interval = setInterval(function () {
                    if (Countdown.value > 17) {
                        Countdown.value--;
                        localStorage.setItem("countdownDate", new Date());
                        Countdown.save();
                    }
                    else {
                        clearInterval(interval);
                    }
                }, 200);
            }

            this.saveDescr();
        },
        save: function () {
            localStorage.setItem("countdownValue", this.value);
            this.$el.html(this.value);

            if (this.value === this.start) {
                this.placesTotal.hide();
            }
            else {
                this.placesTotal.show();
            }
        },
        reducePlaces: function () {
            var value1 = this.$place1.html(),
                value2 = this.$place2.html(),
                value3 = this.$place3.html(),
                random,
                success = false;


            while (success == false) {
                random = Math.round(Math.random() * (4 - 1) + 1);

                if (random == 1) {
                    if (value1 < 3) {
                        continue;
                    }
                    else {
                        this.$place1.html(-3); //--value
                        success = true;
                    }
                }
                else if (random == 3) {
                    if (value3 < 3) {
                        continue;
                    }
                    else {
                        this.$place3.html(--value3);
                        success = true;
                    }
                }
                else if (random == 3 || random == 4) {
                    if (value2 < 3) {
                        continue;
                    }
                    else {
                        this.$place2.html(--value2);
                        success = true;
                    }
                }
            }
        },
        saveDescr: function () {
            if (this.value < 5) {
                this.$descr.html("места");
            }
        }
    }

    return Countdown;
    })

но эфект все тот же... -1, я уже не знаю к кому обращаться и что писать...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень нужен обратный таймер ! ! kca99 Общие вопросы Javascript 7 04.03.2013 13:42
Почему MySQL экранирует обратный слеш при запросе? nip Серверные языки и технологии 2 02.11.2012 15:38
jQuery Timer - обратный отсчет времени в 10 минут adax jQuery 1 01.11.2011 14:54
обратный слэш в JSON nikolaich Серверные языки и технологии 1 18.01.2011 16:20
Обратный ответ kotjke AJAX и COMET 2 06.12.2009 16:54