2015-05-18 10 views
5

У меня есть страница, в которой перечислены около 30 портфелей, каждая из которых имеет 3 запаса. Я пытаюсь создать круговую диаграмму для каждого портфеля, где круговая диаграмма будет состоять из значений из трех акций в этом портфеле.Динамически создавая графики с jQuery

Значения запасов печатаются на экране, поэтому я могу легко их захватить с помощью jQuery .text() и .slice().

Моя проблема возникает, когда я хочу изменить данные на графике, чтобы соответствовать каждому портфелю (или группе акций).

<script>:

$(document).ready(function() { 

    $.each($('.stocks-data'), function(){ 
     $this = $(this); 
     $a_base = $this.children(".a-card").text(); 
     $a_pie = $a_base.].replace (/[^\d.]/g, '');; 
     console.log($a_pie) 
     $b_base = $this.children(".b-card").text(); 
     $b_pie = $b_base.replace (/[^\d.]/g, ''); 
     console.log($b_pie) 
     $c_base = $this.children(".c-card").text(); 
     $c_pie = $c_base.replace (/[^\d.]/g, ''); 
     console.log($c_pie) 

     var data = [ 
     { 
      value: $a_pie, 
      color:"#F7464A", 
      highlight: "#FF5A5E", 
      label: "Stock A" 
     }, 
     { 
      value: $b_pie, 
      color: "#46BFBD", 
      highlight: "#5AD3D1", 
      label: "Stock B" 
     }, 
     { 
      value: $c_pie, 
      color: "#FDB45C", 
      highlight: "#FFC870", 
      label: "Stock C" 
     } 
     ] 

     $this.children('.stocks-pie'), (function(index, element){   
      var ctx = element.getContext("2d"); 
      new Chart(ctx).Doughnut(data ,{animateRotate: false}); 
     }); 

    }); 

}); 

page.php:

#in a php echo 
<div class=".stocks-data"> 
    <div class="name-container"> 
     <div class="name">Name: '.$name.'</div> 
    </div> 
    <div class="a-card">Stock A: '.$stocka.'g</div> 
    <div class="b-card">Stock B: '.$stockb.'g</div> 
    <div class="c-card">Stock C: '.$stockc.'g</div> 
    <canvas class="stocks-pie" height="80" width="100"></canvas> 
</div> 

Пример данных:

.$stocka. = 14.2 .$stockb. = 2.8 .$stockc. = 3.9

Проблема:

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

Дополнительная информация:

Это использование Charts.js

+0

, Что вернулся из 'кон sole.log ($ a_pie) ' – Saqueib

+0

Он варьируется для каждого портфеля, но он по существу такой же, как'. $ stocka .' – thefoxrocks

+0

Попробуйте запустить 'parseFloat ($ a_pie)' для всех значений – Saqueib

ответ

3

Работа jsfiddle - http://jsfiddle.net/6cgo4opg/45/

Установленный ниже

$a_pie = $a_base.].replace (/[^\d.]/g, '');; 

должен быть

$a_pie = $a_base.replace(/[^\d.]/g, ''); 

и

$this.children('.stocks-pie'), (function(index, element){ 

должен быть

$this.children('.stocks-pie').each(function (index, element) { 

и

<div class=".stocks-data"> 

должен быть

<div class="stocks-data"> 
+0

Это потрясающе! Огромное спасибо. – thefoxrocks

Смежные вопросы