在循环中创建变量并在循环外部使用它时,我的循环逻辑会感到困惑

时间:2014-08-03 19:03:52

标签: javascript jquery loops

我的循环正在计算页面中存在多少个图表,之后它会将图表的这些值存储到变量中。我正在尝试利用这些值并将它们附加到我的DOM中。

这是我的困境,当我在循环中获取变量时,例如。 visual_pie_val,它将返回两个值“20”和“10”。另一方面,如果我在循环外部获取它,它将仅返回最后一个值“10”。

我需要它来返回各自的值

示例:

对于 visualization-80 ,它需要返回 20 ,对于 visualization-81 ,它需要返回 10 < /强>

我还需要确定图表类型,所以,我使用了if语句,如果我把if语句放在循环中,正如预期的那样,我可以确定类型,但同时,我生成了两次元素(页面中当前的图表数量),因为它位于for循环内。

这就是我的代码:

//  CustomVisualizer 

function numAttrs(obj) {
  var count = 0;
  for(var key in obj) {
    if (obj.hasOwnProperty(key)) {
      ++count;
    }
  }
  return count;
}


var visual = visualizer.charts; // contains "visualization-80" and "visualization-81"
    visual_list = [],
    visual_title = [],
    visual_type = [],
    visual_pie_val = [],

    shadow_box = '<div class="percent"></div><div class="inner"></div> <div class="outer"></div>';


// load key
for(var k in visual) visual_list.push(k);


var visual_target  = '#' + visual_list.join(', #');


for (  i = 0; i < numAttrs(visual); i++ ) {

    visual_title[i] = visual[visual_list[i]].settings.title;
    visual_type = visual[visual_list[i]].type; // currently it's "pie"
    visual_pie_val = visual[visual_list[i]].data[0][1]; // "visualization-80" value is 20, "visualization-81" value is 10

    // remove title
    visual[visual_list[i]].settings.title = '';

    if(visual_type == 'pie') {
        $(visual_target).parent().append(shadow_box);
        $(visual_target).parent().find('.percent').append(visual_pie_val) // visual_pie_val will return "2010"
    } else {
        console.log('not pie');
    }

};

$(visual_target).parent().find('.percent').append(visual_pie_val); // visual_pie_val will return "10"

这是我的小提琴,可以更好地说明我的问题:

http://jsfiddle.net/9hKHJ/1/

我需要建议。谢谢!

1 个答案:

答案 0 :(得分:0)

问题出在第14行。你输入一个分号而不是逗号,使其余的变量定义为全局变量。
尝试将分号更改为逗号并查看它是否有效