js中根据json生成html表格的方法介绍(代码)

本篇文章给大家带来的内容是关于js中根据json生成html表格的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

之前公司有一个需求是:通过js来生成html。而且大部分都是生成表格,直接通过字符串拼接的话,代码的可复用性太低的,所以写了个通用的json转html表格的工具。

代码

htmlKit = {    _tags: [], html: [],     _createAttrs: function (attrs) {        var attrStr = [];        for (var key in attrs) {            if (!attrs.hasOwnProperty(key)) continue;            attrStr.push(key + "=" + attrs[key] + "")        }        return attrStr.join(" ")    },     _createTag: function (tag, attrs, isStart) {        if (isStart) {            return ""        } else {            return ""        }    },     start: function (tag, attrs) {        this._tags.push(tag);        this.html.push(this._createTag(tag, attrs, true))    },     end: function () {        this.html.push(this._createTag(this._tags.pop(), null, false))    },     tag: function (tag, attr, text) {        this.html.push(this._createTag(tag, attr, true) + text + this._createTag(tag, null, false))    },     create: function () {        return this.html.join("")    }};function json2Html(data) {    var hk = htmlKit;    hk.start("table", {"cellpadding": "10", "border": "1"});    hk.start("thead");    hk.start("tr");    data["heads"].forEach(function (head) {        hk.tag("th", {"bgcolor": "AntiqueWhite"}, head)    });    hk.end();    hk.end();    hk.start("tbody");    data["data"].forEach(function (dataList, i) {        dataList.forEach(function (_data) {            hk.start("tr");            data["dataKeys"][i].forEach(function (key) {                var rowsAndCol = key.split(":");                if (rowsAndCol.length === 1) {                    hk.tag("td", null, _data[rowsAndCol[0]])                } else if (rowsAndCol.length === 3) {                    hk.tag("td", {"rowspan": rowsAndCol[0], "colspan": rowsAndCol[1]}, _data[rowsAndCol[2]])                }            });            hk.end()        })    });    hk.end();    hk.end();    return hk.create()}

登录后复制

使用说明

HtmlKit

立即学习“前端免费学习笔记(深入)”;

htmlKit是创建html标签的工具

函数

函数名 作用 例子

start (tag, attrs)创建未封闭标签头start(“table”, {“cellpadding”: “10”, “border”: “1”}),输出end ()创建上一个start函数的标签尾上面执行了start(“table”),再执行end(),输出tag (tag, attr, text)创建封闭标签tag(“th”, {“bgcolor”: “AntiqueWhite”}, “hello”),输出

hello

json2Html

json转Html

例子:

var data = [    {        "chinese": 80,        "mathematics": 89,        "english": 90    }];var total = 0;data.forEach(function (value) {    for (key in value) {        total += value[key];    }});var htmlMetadata = {    "heads": ["语文", "数学", "英语"],    "dataKeys": [["chinese", "mathematics", "english"], ["text","1:2:total"]], // rowspan:colspan:value    "data": [data, [{"text": "合计","total": total}]]};var html = json2Html(htmlMetadata);console.info(html);

登录后复制

输出结果(结果为了好看,格式化了):

语文 数学 英语
80 89 90
合计 259

登录后复制

效果:

语文 数学 英语

808990合计259

以上就是js中根据json生成html表格的方法介绍(代码)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2738246.html

(0)
上一篇 2025年3月8日 01:48:23
下一篇 2025年3月8日 01:48:27

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • ECMAScript6中Promise是什么?有什么用?(附示例)

    本篇文章给大家带来的内容是关于ecmascript6中promise是什么?有什么用?(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 刚学习完,有点粗略印象。整理记录一下以便后续学习补充,加深理解。 Promis…

    编程技术 2025年3月8日
    200
  • JavaScript中按值传递的详细介绍

    本篇文章给大家带来的内容是关于JavaScript中按值传递的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 概述 参数的传递分为按值传递和按引用传递,而 javascript 中参数的传递只有按值传递。 ECMA…

    2025年3月8日
    200
  • Vue中使用axios请求拦截的方法介绍

    本篇文章给大家带来的内容是关于vue中使用axios请求拦截的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、前言 axios的基础使用就不过多的讲解啦,如何使用可以看axios文档使用说明·Axios中文说明…

    2025年3月8日
    200
  • 带你详细实现vue双向绑定

    本篇文章给大家带来的内容是关于带你详细实现vue双向绑定,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 当今前端天下以 Angular、React、vue 三足鼎立的局面,你不选择一个阵营基本上无法立足于前端,甚至是两个或…

    2025年3月8日 编程技术
    200
  • javascript遍历方法的介绍(代码示例)

    本篇文章给大家带来的内容是关于javascript遍历方法的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 有用到object对象的转换成数组,然后又想到了遍历方法,所以,也想记录下 1. 终止或者跳出循环…

    编程技术 2025年3月8日
    200
  • JS中原型式和寄生式继承的详解(代码示例)

    本篇文章给大家带来的内容是关于js中原型式和寄生式继承的详解(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 前言:最近在细读Javascript高级程序设计,对于我而言,中文版,书中很多地方翻译的差强人意,所以…

    编程技术 2025年3月8日
    200
  • JavaScript中如何使用String对象?String对象的常用方法

    本篇文章给大家带来的内容是介绍javascript中如何使用string对象?string对象的常用方法 。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 length 返回字符串的长度(字符数) var str=’Hel…

    2025年3月8日 编程技术
    200
  • 本地node包的测试方法介绍

    本篇文章给大家带来的内容是关于本地node包的测试方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 当我们编写一个node包,在发布到npm上之前,需要在本地测试该包。假设我们有一个已经编写好的本地node包xcxu…

    编程技术 2025年3月8日
    200
  • BAT各大互联网公司javascript前端面试题总结

    本篇文章给大家带来的内容是关于bat各大互联网公司javascript前端面试题总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 很多面试题是我自己面试BAT亲身经历碰到的。整理分享出来希望更多的前端er共同进步吧,不仅…

    2025年3月8日
    200
  • Node.js的面试题内容总结(附答案)

    本篇文章给大家带来的内容是关于node.js的面试题内容总结(附答案),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 译者按: 从ECMAScript标准,Node.js语法以及NPM模块角度来看,Node.js的发展让人…

    2025年3月8日
    200

发表回复

登录后才能评论