JavaScript 循环;获取当前变量

标签 javascript variables loops closures

我正在尝试用 shiftzoom.js 制作 map

我有以下代码片段:

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>');
    }
}

我在 map 上放置点来代表湖泊,我希望在单击该点时放大。这就是函数 get_lake 所做的事情,但是我单击的每个点都会放大到“i”的最后一个值。我尝试过像这样使用闭包:

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

但我可能无法正确使用它,因为此代码无法运行。有谁知道如何编写代码以便函数调用当前变量而不是最后一个变量?

谢谢

最佳答案

说实话,我不熟悉您正在使用的库,而且我发现您发布的代码绝对是一团糟!缩进会对可读性有很大帮助。不管怎样,试试这个:

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

闭包在这里不起作用,因为您没有在那里创建函数:您正在创建一个字符串。因此,将 i 的值连接到字符串中。

关于JavaScript 循环;获取当前变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109765/

相关文章:

javascript - JS中静态函数的继承

Javascript将变量写入div

javascript - 从 chrome 扩展的后台页面注入(inject) HTML

javascript - 使用注入(inject)脚本在每个步骤请求 CasperJS 导航

javascript - 从 Angular 调用节点

javascript - 如何根据条件为 JSX 中的键赋予变量的值

javascript - 考虑到新的 Graph API 限制,如何获取用于测试应用程序的 Facebook 好友列表?

javascript - 用类和循环简化javascript?

c - 使用循环理解数字反转

c - 遍历 C 中的多个数组