2013-11-27 3 views
0

Я использую счетчик для отметки лет между 1850 и 2010 годами, и я бы хотел, чтобы он увеличивался с шагом в 10 лет. Я пытаюсь вызвать обмен .html с помощью div. Например, когда «.infinite-container1» получает 350 пикселей сверху, то гипотетически счетчик должен идти с 1850 по 1860, а когда «.infinite.container5» получает 350 пикселей от вершины, счетчик должен измениться с 1860 до 1870, и поэтому на. Тем не менее, я должен делать что-то не так с моим кодом или математикой или с тем и другим, потому что он читает только 2170, когда первый div передает 350 пикселей. Помогите?jQuery looping counter

for (var i = 1; i < 31; i=i+5){ 
    $('.infinite-container' + i).waypoint(function() { 
     document.getElementById("year").innerHTML=(1850+10*i); 
    }, {offset: 350}); 
} 
+2

если вы используете JQuery, почему использовать document.getElementById? – geedubb

ответ

0

Это довольно распространенная проблема с областью.

Значение i по запросу вызова waypoint() - это значение в конце цикла. Чтобы сохранить значение, вы можете создать новую область, кто будет держать i на значении объявления:

for (var i = 1; i < 31; i=i+5){ 
    (function(i) { 
     $('.infinite-container' + i).waypoint(function() { 
      document.getElementById("year").innerHTML=(1850+10*i); 
     }, {offset: 350}); 
    })(i); 
} 

Я предлагаю прочитать это сообщение в блоге: http://www.2ality.com/2013/05/quirk-variable-scope.html

+0

, который, кажется, делает трюк! Спасибо – user3042946