使用js动态绘制报表

来源:互联网 发布:守望先锋吧被关 知乎 编辑:程序博客网 时间:2024/05/16 04:51
使用js动态绘制报表只要惠灵活运用JQuery的
.find()
.each()
.attr()
.filter()
.remove()
.indexOf()
.after()
.append()的方法就好弄
HTML
<tr>    <td>        <table id="servertab" width="100%" border="1" cellpadding="1" cellspacing="0"               style="border:solid 1px #000000; text-align:center;">            <thead>            <tr>                <td colspan="10" style="background: linear-gradient(#1818FC, #FFFFFF);">xxx服务器</td>            </tr>            <tr>                <td rowspan="2" colspan="2">名称</td>                <td colspan="3">CPU使用率</td>                <td colspan="3">内存使用率</td>                <td colspan="2">逻辑分区使用率</td>            </tr>            <tr>                <td>最高值</td>                <td>最高值时间</td>                <td>平均值</td>                <td>最高值</td>                <td>最高值时间</td>                <td>平均值</td>                <td>分区名称</td>                <td>分区使用率</td>            </tr>            </thead>            <tbody>                    </tbody>        </table>    </td></tr><tr>    <td colspan="5" style="line-height: 20px;text-align:left;"><h3>xxx运行指标</h3></td></tr><tr>    <td>        <table id="databasetab" width="100%" border="1" cellpadding="1" cellspacing="0"               style="border:solid 1px #000000; text-align:center;">            <thead>            <tr>                <td colspan="3" style="background: linear-gradient(#1818FC, #FFFFFF);">数据库</td>                <td colspan="5" style="background: linear-gradient(#1818FC, #FFFFFF);">会话数</td>            </tr>            <tr>                <td>数据库名称</td>                <td>表空间名称</td>                <td>表空间使用率</td>                <td>最大值</td>                <td>最大值时间</td>                <td>最小值</td>                <td>最小值时间</td>                <td>平均值</td>            </tr>            </thead>            <tbody>                        </tbody>        </table>    </td></tr><tr>    <td colspan="5" style="line-height: 20px;text-align:left;"><h3>xxx设备运行指标</h3></td></tr><tr>    <td>        <table id="jfdlhjtab" width="100%" border="1" cellpadding="1" cellspacing="0"               style="border:solid 1px #000000; text-align:center;">            <thead>            <tr>                <td colspan="8" style="background: linear-gradient(#1818FC, #FFFFFF);">机房动力环境                </td>            </tr>            <tr>                <td>名称</td>                <td>参数</td>                <td>设备名称</td>                <td>最大值</td>                <td>最大值时间</td>                <td>最小值</td>                <td>最小值时间</td>                <td>平均值</td>            </tr>            <tbody>            ${jfdlhjlist}            </tbody>        </table>    </td></tr>
js脚本
//添加行function addrow(tab, col, nowTr) {    if (col == 1) {        var str = '';        if (tab.indexOf("server") >= 0) {            if (serverrowindex) {            } else {                serverrowindex = 100;            }            str = servertrAdd.replace(new RegExp('@serverrowindex@', 'g'), serverrowindex + "");            addTr(tab, nowTr, str);            serverrowindex = parseInt(serverrowindex) + 1;        }               else {            if (tab.indexOf("database") >= 0) {                if (databaserowindex) {                } else {                    databaserowindex = 100;                }                str = databaseAdd.replace(new RegExp('@databaserowindex@', 'g'), databaserowindex + "");                addTr(tab, nowTr, str);                databaserowindex = parseInt(databaserowindex) + 1;            }             else {                if (tab.indexOf("jfdlhj") >= 0) {                    if (jfdlhjrowindex) {                    } else {                        jfdlhjrowindex = 100;                    }                    str = jfdlhjAdd.replace(new RegExp('@jfdlhjrowindex@', 'g'), jfdlhjrowindex + "");                    addTr(tab, nowTr, str);                    jfdlhjrowindex = parseInt(jfdlhjrowindex) + 1;                }            }        }    } else {                        if (tab.indexOf("database") >= 0) {                    $(nowTr).parent().parent().find("input").each(function () {                        var field = $(this).attr('id');                        if (field && field.indexOf("databasefieldName") >= 0) {                            aftername = $(this).attr('value');                        }                        if (field && field.indexOf("databasefieldValue") >= 0) {                            afterid = $(this).attr('value');                        }                    })                    tr = '<tr><td style="width:30%;">';                    tr = tr + '<input type="text" name="arys[@0@].fieldName" id="' + databaserowindex + 'databasefieldName" class="input_box" style="width:160px;" value="' + aftername + '" onclick="javascript:choosedatabase(this);"/>';                    tr = tr + '<input type="hidden" name="arys[@0@].fieldValue" id="' + databaserowindex + 'databasefieldValue" value="' + afterid + '"/>';                    tr = tr + '<input type="hidden" name="arys[@0@].orderNo" id="' + databaserowindex + 'databaseorderNo" value="@0@" />';                    tr = tr + '<input type="button" id="adddatabase" onclick="javascript:addrow(\'databasetab\',1,this)"  style="width:45px;" value="新增行"/>';                    tr = tr + '<input type="button" id="deldatabase" onclick="javascript:delrow(this)" style="width:45px;" value="删除行"/>';                    tr = tr + '</td><td style="width:30%;">';                    tr = tr + '<input type="text" name="arys[@0@].param1" id="' + databaserowindex + 'databaseparam1" class="input_box" style="width:160px;" onclick="javascript:choosedatabase2(this);"/>';                    tr = tr + '<input type="hidden" name="arys[@0@].param2" id="' + databaserowindex + 'databaseparam2" />';                    tr = tr + '<input type="hidden" name="arys[@0@].viewType" id="' + databaserowindex + 'databaseviewType" value="database" />';                    tr = tr + '<input type="button"  id="adddatabase" onclick="javascript:addrow(\'databasetab\',2,this)"  style="width:45px;" value="新增行"/>';                    tr = tr + '<input type="button" id="deldatabase" onclick="javascript:delrow(this)" style="width:45px;" value="删除行"/></td>';                    tr = tr + '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>';                    databaserowindex = parseInt(databaserowindex) + 1;                                }            }            addTr(tab, nowTr, tr);                    } else {            if (col == 3) {                if (tab.indexOf("jfdlhj" >= 0)) {                    $(nowTr).parent().parent().find("input").each(function () {                        var field = $(this).attr('id');                        if (field && field.indexOf("jfdlhjparam1") >= 0) {                            aftername = $(this).attr('value');                        }                        if (field && field.indexOf("jfdlhjparam2") >= 0) {                            aftername2 = $(this).attr('value');                        }                    })                    tr = '<tr><td style="width:22%;">';                    tr = tr + '<input type="text" name="arys[@0@].param1" id="' + jfdlhjrowindex + 'jfdlhjparam1"  value="' + aftername + '" class="input_box" style="width:80px;" />';                    tr = tr + '<input type="button" id="addjfdlhj" onclick="javascript:addrow(\'jfdlhjtab\',1,this)"  style="width:50px;" value="新增行"/>';                    tr = tr + '<input type="button" id="deljfdlhj" onclick="javascript:delrow(this)" style="width:50px;" value="删除行"/>';                    tr = tr + '</td><td style="width:22%;">';                    tr = tr + '<input type="text" name="arys[@0@].param2" id="' + jfdlhjrowindex + 'jfdlhjparam2"  value="' + aftername2 + '" class="input_box" style="width:80px;"/>';                    tr = tr + '<input type="button" id="addjfdlhj" onclick="javascript:addrow(\'jfdlhjtab\',2,this)"  style="width:50px;" value="新增行"/>';                    tr = tr + '<input type="button" id="deljfdlhj" onclick="javascript:delrow(this)" style="width:50px;" value="删除行"/>';                    tr = tr + '</td><td style="width:22%;">';                    tr = tr + '<input type="text" name="arys[@0@].fieldName" id="' + jfdlhjrowindex + 'jfdlhjfieldName" class="input_box" style="width:70px;" onclick="javascript:choosejfdlhj(this);"/>';                    tr = tr + '<input type="hidden" name="arys[@0@].fieldValue" id="' + jfdlhjrowindex + 'jfdlhjfieldValue"/>';                    tr = tr + '<input type="hidden" name="arys[@0@].orderNo" id="' + jfdlhjrowindex + 'jfdlhjorderNo" value="@0@" />';                    tr = tr + '<input type="hidden" name="arys[@0@].viewType" id="' + jfdlhjrowindex + 'jfdlhjviewType" value="jfdlhj" />';                    tr = tr + '<input type="button"  id="addjfdlhj" onclick="javascript:addrow(\'jfdlhjtab\',3,this)"  style="width:50px;" value="新增行"/>';                    tr = tr + '<input type="button" id="deljfdlhj" onclick="javascript:delrow(this)" style="width:50px;" value="删除行"/></td>';                    tr = tr + '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>';                    jfdlhjrowindex = parseInt(jfdlhjrowindex) + 1;                }                addTr(tab, nowTr, tr);            }        }    }}//删除行function delrow(nowTr) {    if (serverrowindex <= 2) return;    delTr($(nowTr).parent().parent());}//tab排序function orderTabAll() {    var num = orderyTab('servertab', 0);    num = orderyTab('databasetab', num);    num = orderyTab('jfdlhjtab', num);   }//tab排序function orderyTab(tab, beginnum) {    var tabhtml = '';    var att = beginnum;    $("#" + tab + " tr").each(function () {        var trs = $(this).children();        if (trs) {            var num = 0;            trs.find("input").each(function () {                var aname = $(this).attr('name');                var aid = $(this).attr('id');                var type = $(this).attr('type');                if (type == 'text' || type == 'hidden') {                    num = num + 1;                    if (aname) {                        aname = aname.replace(/\[.+\]/, "[" + att + "]");                        $('#' + aid).attr('name', aname);                    }                    if (aname && aname.indexOf('orderNo') >= 0) {                        $('#' + aid).attr('value', att);                    }                }            });            if (trs.length > 0 && num > 0) att = att + 1;        }    });    return att;}/** * 为table指定行添加一行 * * tab 表id * row 行数,如:0->第一行 1->第二行 -2->倒数第二行 -1->最后一行 * trHtml 添加行的html代码 * */function addTr(tab, nowTr, trHtml) {    //获取table最后一行 $("#tab tr:last")    //获取table第一行 $("#tab tr").eq(0)    //获取table倒数第二行 $("#tab tr").eq(-2)    var $tr = $(nowTr).parent().parent();    $tr.after(trHtml);}function delTr(nowTr) {    var $tr = $(nowTr);    $tr.remove();}

/** * 合并列 * @param table_id table ID * @param table_colnum 第几列 */function mergetable_rowspan(table_id, table_colnum) {    var table_firsttd = "";    var table_currenttd = "";    var table_SpanNum = 0;    table_Obj = $(table_id + " tr td:nth-child(" + table_colnum + ")");    table_Obj.each(function (i) {        if (i == 0) {            table_firsttd = $(this);            table_SpanNum = 1;        } else {            table_currenttd = $(this);            if (table_firsttd.text() == table_currenttd.text()) {                table_SpanNum++;                table_currenttd.remove();                table_firsttd.attr("rowSpan", table_SpanNum);            } else {                table_firsttd = $(this);                table_SpanNum = 1;            }        }    });}jQuery.fn.rowspan = function (colIdx) { //封装的一个JQuery小插件    return this.each(function () {        var that;        $('tr', this).each(function (row) {            $('td:eq(' + colIdx + ')', this).filter(':visible').each(function (col) {                if (that != null && $(this).html() == $(that).html()) {                    rowspan = $(that).attr("rowSpan");                    if (rowspan == undefined) {                        $(that).attr("rowSpan", 1);                        rowspan = $(that).attr("rowSpan");                    }                    rowspan = Number(rowspan) + 1;                    $(that).attr("rowSpan", rowspan);                    $(this).remove();//.hide();                } else {                    that = this;                }            });        });    });}
// 服务器var servertrAdd = '<tr><td style="width:230px;">';servertrAdd = servertrAdd + '<input type="text" name="arys[@0@].param1" id="@serverrowindex@serverparam" class="input_box" style="width:100px;" />';servertrAdd = servertrAdd + '<input type="button" id="addserver" onclick="javascript:addrow(\'servertab\',1,this)"  style="width:50px;" value="新增行"/>';servertrAdd = servertrAdd + '<input type="button" id="delserver" onclick="javascript:delrow(this)" style="width:50px;" value="删除行"/></td>';servertrAdd = servertrAdd + '<td><input type="text" name="arys[@0@].fieldName" id="@serverrowindex@serverfieldName" class="input_box" style="width:100px;" onclick="javascript:chooseserver(this);"/>';servertrAdd = servertrAdd + '<input type="hidden" name="arys[@0@].fieldValue" id="@serverrowindex@serverfieldValue"/>';servertrAdd = servertrAdd + '<input type="hidden" name="arys[@0@].orderNo" id="@serverrowindex@serverorderNo" value="@0@" />';servertrAdd = servertrAdd + '<input type="hidden" name="arys[@0@].viewType" id="@serverrowindex@serverviewType" value="server" />';servertrAdd = servertrAdd + '<input type="button"  id="addserver" onclick="javascript:addrow(\'servertab\',2,this)"  style="width:50px;" value="新增行"/>';servertrAdd = servertrAdd + '<input type="button" id="delserver" onclick="javascript:delrow(this)" style="width:50px;" value="删除行"/></td>';servertrAdd = servertrAdd + '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>'    + '<td><input type="text" name="arys[@0@].param2" id="@serverrowindex@param2" class="input_box" style="width:100px;" onclick="javascript:chooseserverdisk(this);"/>'    + '<input type="hidden" name="arys[@0@].param3" id="@serverrowindex@param3"/>'    + '</td><td><input type="text" name="arys[@0@].param4" id="@serverrowindex@param4" style="width:80px;"/></td></tr>';//数据库var databaseAdd = '<tr><td style="width:30%;">';databaseAdd = databaseAdd + '<input type="text" name="arys[@0@].fieldName" id="@databaserowindex@databasefieldName" class="input_box" style="width:160px;" onclick="javascript:choosedatabase(this);"/>';databaseAdd = databaseAdd + '<input type="hidden" name="arys[@0@].fieldValue" id="@databaserowindex@databasefieldValue"/>';databaseAdd = databaseAdd + '<input type="hidden" name="arys[@0@].orderNo" id="@databaserowindex@databaseorderNo" value="@0@" />';databaseAdd = databaseAdd + '<input type="button" id="adddatabase" onclick="javascript:addrow(\'databasetab\',1,this)"  style="width:45px;" value="新增行"/>';databaseAdd = databaseAdd + '<input type="button" id="deldatabase" onclick="javascript:delrow(this)" style="width:45px;" value="删除行"/>';databaseAdd = databaseAdd + '</td><td style="width:30%;">';databaseAdd = databaseAdd + '<input type="text" name="arys[@0@].param1" id="@databaserowindex@databaseparam1" class="input_box" style="width:160px;" onclick="javascript:choosedatabase2(this);"/>';databaseAdd = databaseAdd + '<input type="hidden" name="arys[@0@].param2" id="@databaserowindex@databaseparam2" />';databaseAdd = databaseAdd + '<input type="hidden" name="arys[@0@].viewType" id="@databaserowindex@databaseviewType" value="database" />';databaseAdd = databaseAdd + '<input type="button"  id="adddatabase" onclick="javascript:addrow(\'databasetab\',2,this)"  style="width:45px;" value="新增行"/>';databaseAdd = databaseAdd + '<input type="button" id="deldatabase" onclick="javascript:delrow(this)" style="width:45px;" value="删除行"/></td>';databaseAdd = databaseAdd + '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>';//var jfdlhjAdd = '<tr><td style="width:22%;">';jfdlhjAdd = jfdlhjAdd + '<input type="text" name="arys[@0@].param1" id="@jfdlhjrowindex@jfdlhjparam1" class="input_box" style="width:80px;" />';jfdlhjAdd = jfdlhjAdd + '<input type="button" id="addjfdlhj" onclick="javascript:addrow(\'jfdlhjtab\',1,this)"  style="width:50px;" value="新增行"/>';jfdlhjAdd = jfdlhjAdd + '<input type="button" id="deljfdlhj" onclick="javascript:delrow(this)" style="width:50px;" value="删除行"/>';jfdlhjAdd = jfdlhjAdd + '</td><td style="width:22%;">';jfdlhjAdd = jfdlhjAdd + '<input type="text" name="arys[@0@].param2" id="@jfdlhjrowindex@jfdlhjparam2"  class="input_box" style="width:80px;"/>';jfdlhjAdd = jfdlhjAdd + '<input type="button" id="addjfdlhj" onclick="javascript:addrow(\'jfdlhjtab\',2,this)"  style="width:50px;" value="新增行"/>';jfdlhjAdd = jfdlhjAdd + '<input type="button" id="deljfdlhj" onclick="javascript:delrow(this)" style="width:50px;" value="删除行"/>';jfdlhjAdd = jfdlhjAdd + '</td><td style="width:22%;">';jfdlhjAdd = jfdlhjAdd + '<input type="text" name="arys[@0@].fieldName" id="@jfdlhjrowindex@jfdlhjfieldName" class="input_box" style="width:70px;" onclick="javascript:choosejfdlhj(this);"/>';jfdlhjAdd = jfdlhjAdd + '<input type="hidden" name="arys[@0@].fieldValue" id="@jfdlhjrowindex@jfdlhjfieldValue"/>';jfdlhjAdd = jfdlhjAdd + '<input type="hidden" name="arys[@0@].orderNo" id="@jfdlhjrowindex@jfdlhjorderNo" value="@0@" />';jfdlhjAdd = jfdlhjAdd + '<input type="hidden" name="arys[@0@].viewType" id="@jfdlhjrowindex@jfdlhjviewType" value="jfdlhj" />';jfdlhjAdd = jfdlhjAdd + '<input type="button"  id="addjfdlhj" onclick="javascript:addrow(\'jfdlhjtab\',3,this)"  style="width:50px;" value="新增行"/>';jfdlhjAdd = jfdlhjAdd + '<input type="button" id="deljfdlhj" onclick="javascript:delrow(this)" style="width:50px;" value="删除行"/></td>';jfdlhjAdd = jfdlhjAdd + '<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>';

原创粉丝点击