【问题标题】:How to add the elements dynamically from the html table for chart.js如何从 chart.js 的 html 表中动态添加元素
【发布时间】:2017-11-06 02:47:20
【问题描述】:

谁能帮忙解决这个问题?

我正在使用 chart.js 将图表开发到我的 asp.net mvc C# 应用程序中。

问题是我无法将元素从 html 表动态添加到图表中。

<canvas id="myChart" width="600" height="400"></canvas> //html5 canvas    
   <script type="text/javascript">    
            var ctx = document.getElementById("myChart").getContext("2d");    
            var data = {                                 
                datasets: [    
                           {
                              fillColor: "rgba(223,104,27,0.5)",    
                              strokeColor: "rgba(220,220,220,1)",    
                              data: getcountdata1()    
                            },    
                            {    
                               fillColor: "rgba(151,187,205,0.5)",    
                               strokeColor: "rgba(151,187,205,1)",    
                               data: getcountdata2()    
                          }]    
   myNewChart = new Chart(ctx).Line(data, options);

以上工作正常,因为在数据集中我正在硬编码数据集中元素的数量,但实际上这应该检查 HTML 表并从表中获取数据。

现在的问题是如何使数据集根据表中的行数获取动态值?

例如我写了一个Javascript函数(我尝试了以下coed):

var data: 
{            
 datasets: getdata()
}

function getdata()
{
rows = document.getElementById('tblresult').getElementsByTagName('tbody')[0].getElementsByTagName('tr').length;    
for(i=0;i<rows;i++)
{
  datasetdata[i] = [
             {
                 fillColor: getrandomfillcolor(),    
                 strokeColor: getrandomstrokecolor(),    
                 data: getcountdata()

             }]
}

function getrandomfillcolor()
{
}

function getrandomstrokecolor()
{
}

function getcountdata()
{
}

return datasetdata

             }

我已经尝试了几次,但无法找到解决方案。

【问题讨论】:

    标签: javascript html charts html-table


    【解决方案1】:

    你需要将每一行传递给getcountdata()函数

    rowsDomElements = document.getElementById('tblresult').getElementsByTagName('tbody')[0].getElementsByTagName('tr');
    
    for(i=0;i<rowsDomElements.length;i++)
    {
        datasetdata[i] = [
        {
             fillColor: getrandomfillcolor(),
             strokeColor: getrandomstrokecolor(),
             data: getcountdata(rowsDomElements[i])
        }]
    }
    
    function getcountdata(row)
    {
        //create data as needed
    }
    

    【讨论】:

    • 语法错误是问题
    • 我们必须使用 datasetdata[i] = [ { fillColor: getrandomfillcolor(), strokeColor: getrandomstrokecolor(), data: getcountdata(rowsDomElements[i]) }] 而不是 datasetdata[i] = { fillColor :getrandomfillcolor(),strokeColor:getrandomstrokecolor(),数据:getcountdata(rowsDomElements [i])}
    • 从datasetdata中取出[] ..谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    相关资源
    最近更新 更多