2017-01-13 4 views
2

この質問は簡単に思えるかもしれませんが、解決方法はわかりません。Javascript - chatjs donut runスクリプトonホバー

私はこれがcodepenです。私が望むのは、実際のタイトルを使ってスクリプトを実行することです。例: "S:7"のセクションが上がっている場合、console.log() "S:7"にしたいです。あなたは助けてもらえますか?

答えて

1

私はchart.jsに慣れていないので、this codepenはややハックですが、ほとんどの場合、動作するようです。それはthis questionへの@ drinorの答えのコードを使用します。

潜在的な問題は、特定のスライス上にマウスを移動してからマウスをパイから外し、再び同じスライス上にマウスを置くとコンソールに何も書き込まれないことです。この場合コンソール出力が必要な場合は、mouseoutイベントを追加してcurrentIndex = -1に設定することができます。

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.2.2/Chart.min.js"></script> 
     <style type="text/css"> 
      .container { 
       width: 80%; 
       margin: 15px auto; 
      } 
     </style> 
    </head> 
    <body> 
     <div class="container"> 
      <h2>Chart.js — Pie Chart Demo (apples)</h2> 
      <div> 
       <canvas id="myChart"></canvas> 
      </div> 
     </div> 

     <script type="text/javascript"> 

      var currentIndex = -1; 

      Chart.defaults.global.hover.onHover = function(x) { 
       if(x[0]) { 
        var index = x[0]._index; 

        if (index !== currentIndex) { 
         currentIndex = index; 
         console.log(x[0]._model.label + ': ' + x[0]._chart.config.data.datasets[0].data[index]); 
        } 
       } 
      }; 

      var ctx = document.getElementById("myChart").getContext('2d'); 
      var myChart = new Chart(ctx, { 
       type: 'pie', 
       data: { 
       labels: ["M", "T", "W", "T", "F", "S", "S"], 
       datasets: [{ 
        backgroundColor: [ 
        "#2ecc71", 
        "#3498db", 
        "#95a5a6", 
        "#9b59b6", 
        "#f1c40f", 
        "#e74c3c", 
        "#34495e" 
        ], 
        data: [12, 19, 3, 17, 28, 24, 7] 
       }] 
       } 
      }); 
     </script> 
    </body> 
</html>