2013-05-30 3 views
-1

Я работал в последнее время в счетчике жизни, и я не могу понять, в чем проблема вокруг, я имею в виду, что у меня есть 2 divs, когда вы на div с классом «живые» вы получаете выигрыш и когда вы в " мертвый ", вы получите счет.Life Counter Issue

Теперь я сделал этот код, который работает по секундам, но это не работает Stright, я имею в виду 1, 2, 3. Но это работает так: http://jsfiddle.net/4Tby5/

Или как визуальный код:

<!DOCTYPE html> 

<html> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Alive - Dead</title> 
     <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
     <script> 
      var l = 1; 
      var good = " Excelent!"; 
      var bad = " OH NO!"; 
      $(document).ready(function() { 
       $('#alive').hover(function() { 
        if (l > 100) { 
         window.clearTimeout("tim"); 
        } 
        else { 
         document.getElementById("percent").innerHTML = "Life: " + l + good; 
         l++; 
         var tim = window.setTimeout("count()", 1000); 
        } 
        count(); 
       }); 
      }); 
      $(document).ready(function() { 
       $('#dead').hover(function() { 
        if (l < 0) { 
         window.clearTimeout("tim"); 
        } 
        else { 
         document.getElementById("percent").innerHTML = "Life: " + l + bad; 
         l--; 
         var tim = window.setTimeout("count()", 1000); 
        } 
        count(); 
       }); 
      }); 
     </script> 
     <style> 
      body { 
       background: red; 
      } 
      .dead { 
       cursor: url(thumb-down.cur) 6 6, auto; 
       padding-bottom: 285px; 
      } 
      .alive { 
       background: #32ff0a; 
       height: 300px; 
       margin: -8px; 
       cursor: url(thumb-up.cur) 6 6, auto; 
      } 
     </style> 
    </head> 
    <body> 
     <div class="alive" id="alive"> 
     Stay here to survive! 
     </div> 
     <div class="dead" id="dead"> 
     <br /> 
     Stay away from dead area! 
     </div> 
     <div id="percent"></div> 
    </body> 
</html> 

Итак, мой вопрос: как я могу исправить это, чтобы получить его 1,2,3 (заменить 1 на 2 и 3, 4 ...)?

+3

Там нет функции называется "подсчет". Это не то, как вы очищаете таймауты. – Pointy

+0

О, lol, я аккуратно удаляю его и забыл удалить его, но я не уверен, что установить в таймаут сейчас, если он не count(), должен ли я сделать функцию? и если я хочу, как я могу сделать это автоматически, без кнопки. – copypaste

+0

Пожалуйста, скажите мне, правильно ли я понимаю ваш вопрос. вы хотите дать счетчик пользователю, если счетчик достигает 100 «его хорошо», если пользователь идет в плохую область .. тогда счетчик уменьшается? –

ответ

0

Это решение проблемы. Проблема в вашем коде ... Функция Hover вычисляется только тогда, когда мышь входит ... Не так долго, как мышь остается внутри.

http://jsfiddle.net/Vdq39/2/

$(document).ready(function() { 
    var good = " Excelent!"; 
    var bad = " OH NO!"; 
    var tim; 
    var counter = 0; 

    function count() { 
     counter++; 
     document.getElementById("percent").innerHTML = "Life: " + counter + good; 
     if (counter > 100) { 
      window.clearInterval(tim); 
     } 
    } 

    function countDown() { 
     counter--; 
     document.getElementById("percent").innerHTML = "Life: " + counter + bad; 
     if (counter < 0) { 
      window.clearInterval(tim); 
     } 

    } 
    $('#alive').hover(function() { 
     if (counter > 100) { 
      window.clearInterval(tim); 
     } else { 
      tim = window.setInterval(count, 1000); 
     } 
    }, function() { 
     window.clearInterval(tim); 
    }); 

    $('#dead').hover(function() { 

     if (counter < 0) { 
      window.clearInterval(tim); 
     } else { 
      tim = window.setInterval(countDown, 1000); 
     } 

    }, 

    function() { 
     window.clearInterval(tim); 
    }); 
}); 
1

Вы не имеете count функцию, сделать один

И ясно таймаут, используя переменную сам не его имя

window.clearTimeout(tim);

также с текущим кодом вам нужно будет использовать глобальная переменная

window.tim = window.setTimeout("count()", 1000);

window.clearTimeout(window.tim);

иначе clearTimeout не увидит его.

+0

Итак, я удаляю функцию count() из setTimeout? – copypaste

+0

Я удалил функцию count(), которая все еще не работает .. она делает то же самое. – copypaste

+0

нет, вы не удаляете setimeout, вы делаете функцию подсчета ... –