Mr_Sergo
@Mr_Sergo

Как заставить цикл присваивать новое значение с каждой итерацией?

Доброго времени суток. Помогите, пожалуйста, понять как при прохождении очередной итерации присваивать значение переменной следующему элементу. Извиняюсь, но не знаю как правильно сформулировать вопрос. Вообщем есть разметка:
<div id="box_points">
    <div id="1" class="point"></div>
    <div id="2" class="point"></div>
    <div id="3" class="point"></div>
</div>

Далее мне необходимо каждому дочернему элементу DIVа с id="box_points" присвоить:
id="1" "onclick=move(0)"
id="2" "onclick=move(-100)"
id="3" "onclick=move(-200)"

Функция move():
function move(step) {
    $("#SLIDE").css("margin-left",step+unit);
}

Я мог бы прописать вручную: GetElementById("1") и т.д., но так как количество элементов может меняться то прописывать вручную не подходит, поэтому я делаю следующее (цикл):
var a = $(".point"),
    c = -100;

for (i = 0; i < 3; i++){
    a[i].onclick = function(){
        move(c);
        c = c - 100;
    };
}

Идея такая что бы при клике на id="1" происходил marginLeft на отметку "-100", при клике на id="2" происходил marginLeft на отметку "-200" ну и так далее. В результате я получаю: кликая по любому элементу с class="point" происходит marginLeft на отметку "-100" независимо по какому id был клик. Собственно сам вопрос: как присваивать, каждую итерацию, новое значение соответствующему id ?, а не одно и тоже значение как это делает цикл. Может по какому то другому пути пойти не прибегая к циклу. И вообще через цикл реально такое осуществить? Помогите пожалуйста, третий день почти не сплю.
  • Вопрос задан
  • 1119 просмотров
Решения вопроса 1
neuotq
@neuotq
Прокрастинация
Легче всего пойти другим путем, при генерации html, у каждого дочернего div сделать дополнительный атрибут с данными о том какой margin ты хочешь, например:
<div id="box_points">
    <div id="1" class="point" data-margin='0'></div>
    <div id="2" class="point" data-margin='-100'></div>
    <div id="3" class="point" data-margin='-200'></div>
</div>

И тогда код js примерно так:
$('.point').click(function() {
    var step = $(this).attr('data-margin');
    move(step);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы