Цикл Javascript; получение текущей переменной - PullRequest
0 голосов
/ 24 февраля 2011

Я пытаюсь создать карту с shiftzoom.js

У меня есть следующий фрагмент кода:

function selectall() {
    for (i in geodata['world']) {
        var q = getGeoPosition('world', i.toUpperCase(), 1654, 496, 1350, 407);
        shiftzoom.construct($('world'), [{
            x: q.l,
            y: q.t,
            w: 40,
            h: 40,
            id: geodata['world'][i].lc,
            pos: 0,
            title: '',
            href: "javascript:get_lake(i); ",
            target: 'graphFrame',
            src: 'images/bullet.gif'
        }]);
        cvi_tip.add(cvi_tip.$(geodata['world'][i].lc), '<small>Province:</small><br/><big><b><u>' + geodata['world'][i].ln + '</u></b></big><br/><small>LAT/LONG:</small><br/><big><b>' + geodata['world'][i].coord + '</b></big><br/><small>PROVINCE:</small><br/><big><b><i>' + geodata['world'][i].pr + '</i></b></big>');
    }
}

Я позиционирую точки для отображения озер на карте, и я хотел бы, чтобы они увеличивались при нажатии на точку. Это то, что делает функция get_lake, но каждая нажатая точка показывает увеличение до последнего значения «i». Я пытался использовать замыкания, например, так:

 href:"javascript:function(num){return function(){get_lake(num);};}(i);"

но я не могу правильно его использовать, так как этот код не запускается. Кто-нибудь знает, как его закодировать, чтобы функция вызывала текущую переменную вместо последней?

Спасибо

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Я буду честен, я не знаком с библиотекой, которую вы используете, и я считаю, что код, который вы разместили, является абсолютным MESS! Отступы очень помогут читабельности. В любом случае, попробуйте это:

href:"javascript:get_lake("+i+"); ",

Закрытие не будет работать здесь, потому что вы не создаете там функцию: вы создаете строку. Таким образом, объединяя значение i в строку.

0 голосов
/ 24 февраля 2011

Из вашего кода мне непонятно, что менять, но этот ответ может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...