2015-05-18 109 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 ​​

問題:

我能得到的圖表工作,但每個投資組合的圖表,這顯然不是我想要的東西只顯示最後的投資組合數據。我怎樣才能做到這一動態,其中使用自己的數據爲每個投資組合創建圖表?

補充信息:

這是使用Charts.js

+0

從什麼'CON返回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