2013-12-24 1 views
0

는 I 잘 작동하는 다음 코드대하여 반복은 : I는 루프를 포함 할 때 자바 스크립트에

Morris.Bar({ 
      element: 'barchart', 
      axes: true, 
      data: [ json.bar.bar1 ], 
      xkey: 'x', 
      ykeys: ['y', 'z', 'a'], 
      labels: ['Facebook', 'LinkedIn', 'Google+'], 
      barColors: ['#707f9b', '#455064', '#242d3c'] 
     }); 

JSON

{ 
"bar" : 
{ 
"bar1" : { 
    "x" : "2013 Q1", 
    "y" : "9", 
    "z" : "6", 
    "a" : "8" 
     }, 
"bar2" : { 
    "x" : "2013 Q2", 
    "y" : "5", 
    "z" : "7", 
    "a" : "3" 
     }, 
"bar3" : { 
    "x" : "2013 Q3", 
    "y" : "8", 
    "z" : "9", 
    "a" : "6" 
     }, 
"bar4" : { 
    "x" : "2013 Q4", 
    "y" : "7", 
    "z" : "9", 
    "a" : "8" 
     } 
} 
} 

그러나 난 Dreamweaver에서 신택스 에러 도시있어왔다 . 또한 출력물이 웹 페이지에 렌더링되지 않습니다.

Morris.Bar({ 
      element: 'barchart', 
      axes: true, 
      data: [ 
      for(i=1;i<=4;i++) 
      { 
      json.bar.bar + i + ',' 
      } 
      ], 
      xkey: 'x', 
      ykeys: ['y', 'z', 'a'], 
      labels: ['Facebook', 'LinkedIn', 'Google+'], 
      barColors: ['#707f9b', '#455064', '#242d3c'] 
     }); 

전체 아이디어는 모양을 만드는 것입니다 같은 시도

Morris.Bar({ 
      element: 'barchart', 
      axes: true, 
      data: [ json.bar.bar1, 
        json.bar.bar2, 
        json.bar.bar3, 
        json.bar.bar4 ], 
      xkey: 'x', 
      ykeys: ['y', 'z', 'a'], 
      labels: ['Facebook', 'LinkedIn', 'Google+'], 
      barColors: ['#707f9b', '#455064', '#242d3c'] 
     }); 
+0

무엇'json.bar.bar [1-4]'입니까? – thefourtheye

+0

배열 정의 내에 for 루프를 사용할 수 없습니다. – tewathia

+0

당신은'Morris.Bar' 객체 외부에서 배열을 생성해야합니다 ... 그러면 배열을'data'에 전달하십시오 – charlietfl

답변

1

배열 내에서 for 루프를 사용할 수 없습니다.

외부에 공개했습니다.

또는 ECMAScript5에서

, 당신이 할 수있는 :

data: Object.keys(json.bar).map(function(key) {return json.bar[key]}), 
+0

와우! 매력처럼 작동합니다! –

3

이 : 당신은 배열, json.bar을 사용할 수 있습니다

data: (function() { 
    var newBar = []; 
    for (i = 1; i <= 4; i++) { 
     newBar.push(json.bar["bar"+i]); //for the current structure of your json.bar object    
    } 
    return newBar 
})(); 

, 당신의 막대 값을. 그런 다음 newBar.push(json.bar[i])을 대신 수행 할 수 있습니다 (i 값을 염두에 두십시오. 첫 번째 요소의 인덱스는 0입니다)

+0

좋은 것 ... 그러나 우리는 그것이 끈인지 아닌지를 모른다. – thefourtheye

+0

@thefourtheye 무엇을 의미합니까? – tewathia

+0

이것은 작동하지 않았지만 @xdazz가 작성한 proplery가 작성한 내용 데이터 : Object.keys (json.bar) .map (function (key) {return json.bar [key]}), –