代码之家  ›  专栏  ›  技术社区  ›  Eli Bendersky

在HTML/Javascript中将数字自动转换为彩色条

  •  4
  • Eli Bendersky  · 技术社区  · 17 年前

    我想从一些自定义数据自动生成一个HTML表。我的数据中有一列是0-100范围内的数字,我想用更图形化的方式显示它,最好是一个彩色的水平条。条形图的长度将表示该值,颜色也会改变(即低于20时为红色,等等)

    类似这样的内容(使用paint.net创建):

    alt text
    (来源: thegreenplace.net )

    提前谢谢

    附言:如果它能在IE6中工作,那将是最好的(不要问…)

    7 回复  |  直到 7 年前
        1
  •  5
  •   Dan Herbert    17 年前

    Alistaparate有一篇关于如何使用纯CSS生成图表的精彩文章。它很好,因为它是可访问的,这意味着即使没有CSS,它也将提供有意义的数据。

    http://www.alistapart.com/articles/accessibledatavisualization

    更新:

        2
  •  4
  •   Simon Groenewolt    17 年前

    这是可行的。

    2种选择:

    例子:

    <table style="border: 1px solid black">
    <tr><th>name</th><th>value</th></tr>
    <tr><td>hi</td><td><div style="height: 10px; width: 35px; background-color: #236611">35</div></td></tr>
    <tr><td>yes</td><td><div style="height: 10px; width: 15px; background-color: #236611">15</div></td></tr>
    <tr><td>see?</td><td><div style="height: 10px; width: 75px; background-color: #2366aa">75</div></td></tr>
    </table>
    

    ... 当然,您可以/应该调整尺寸,使其看起来更漂亮:-)

        3
  •  3
  •   Logan Serman    17 年前

    最好的方法是西蒙文章的第二部分。在需要的地方放置一个div,并使用javascript或PHP(取决于是否希望动态更改)使用百分比更改宽度。对颜色使用if语句。例如,在javascript中:

    function displayGraph(barID, number)
    {
        var color;
        if (number <= 20)
        {
            color = "red";
        }
        elseif (number > 20 && number <= 60)
        {
            color = "yellow";
        }
        else
        {
            color = "green";
        }
    
        var bar = document.getElementById(barID);
        bar.style.width = number + "%";
        bar.style.backgroundColor = color;
    }
    

    我并没有测试这个,但类似的东西应该会起作用。

        4
  •  2
  •   DavGarcia    17 年前

    查看 jQuery Sparkline 它提供内联图表,类似于您正在寻找的。如果你使用 bullet graph

        5
  •  1
  •   Derek Kurth    17 年前

    由于表中已经有数据,您可以签出 jQuery Visualize Plugin

    $('table').visualize();
    

    它将从您的表中构建一个图形。

        6
  •  1
  •   Enamul Hassan    11 年前

    flot 可以使用。

    它基于canvas和jquery。

    示例代码似乎很简单:

    $(function () {
        var d1 = [[0, 3], [4, 8], [8, 5], [9, 13]];
        $.plot($("#placeholder"), [ d1 ]);
    });
    
        7
  •  0
  •   Matt Darby    17 年前