js动态生成数据列表

我们通常会使用table标签来展示数据内容,由于需要展示的数据内容是随时更换的,所以不可能将展示的数据列表写死在html写死在页面中,而是需要我们根据后台传来的数据随时更换,这个时候就需要我们使用js来动态生成表格。

首先我们需要先写好页面的样式。

html部分

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>js动态生成数据列表</title>
    <style type="text/css">
        * {
            padding: 0;
            margin: 0;
        }

        #tb {
            width: 500px;
            border: 1px solid #000;
            border-collapse: collapse;
        }

            #tb td, #tb th {
                border: 1px solid #000;
            }

            #tb thead tr {
                height: 50px;
                background-color: lightgray;
            }

            #tb tbody tr {
                text-align: center;
                height: 30px;
            }

            #tb a {
                text-decoration: none;
            }

                #tb a:hover {
                    color: hotpink;
                }
    </style>
    <meta charset="utf-8" />
</head>
<body>
</body>
</html>

这个时候我们可以通过ajax向服务端发送请求,获取要展示的数据,由于主要目的是使用js动态展示列表,所本我们就假设已经获取到后台的数据。

js部分

    var headers = ["姓名", "学科", "成绩", "删除"];
    var datas = [
        { "name": "马闯", "subject": "语文", "score": 90 },
        { "name": "马户", "subject": "数学", "score": 100 },
        { "name": "马伦", "subject": "体育", "score": 9 },
        { "name": "马尧", "subject": "音乐", "score": 100 },
        { "name": "马震", "subject": "语文", "score": 90 },
        { "name": "马云", "subject": "语文", "score": 90 }
    ];

    creatTable(document.body, headers, datas);

    //将动态生成列表的部分封装成函数,可以重复调用,也方便统一修改
    function creatTable(parent, headers, datas) {

    var table = document.createElement("table");
    table.id = "tb";
    parent.appendChild(table);

    var thead = document.createElement("thead");
    table.appendChild(thead);

    var tr = document.createElement("tr");
    thead.appendChild(tr);

    for (var i = 0; i < headers.length; i++) {
        var th = document.createElement("th");
        th.innerHTML = headers[i];
        tr.appendChild(th);
    }

    var tbody = document.createElement("tbody");
    table.appendChild(tbody);

    for (var i = 0; i < datas.length; i++) {
        var tr = document.createElement("tr");
        tbody.appendChild(tr);

        for (var k in datas[i]) {
            var td = document.createElement("td");
            td.innerHTML = datas[i][k];
            tr.appendChild(td);
        }
        var td = document.createElement("td");
        td.innerHTML = "<a href=‘javascript:‘>删除</a>";
        tr.appendChild(td);

        td.children[0].onclick = function () {
            var lines = tbody.children.length;
            if (lines <= 1) {
                alert("最后一条!请留一点数据吧!");
                return;
            }
            var tip = confirm("确认删除?");
            if (tip) {
                tbody.removeChild(this.parentNode.parentNode);
            }

        }
    }
}
时间: 2024-10-22 11:18:31

js动态生成数据列表的相关文章

抓取js动态生成数据

最近在抓数据,一般的网页数据抓取相对容易一些,今天在抓电视猫的节目单,发现有些数据时抓取不到的,Java端得到的HTML文件里面没有某一段代码,查了很多资料,发现说是js动态生成的数据,无法直接抓取,有一种解决方法是利用找到ajax请求地址和参数,重新抓取,该方法存在一个问题,就是当参数被加密过时,该方法就不好用了,所以,这里用了一个办法,就是利用HTMLunit来抓取(可以利用jsuop来处理HTML文件),jar包下载地址:http://download.csdn.net/detail/jo

爬虫案例(js动态生成数据)

需求:爬取https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html页面中的新闻数据. 分析: 1.首先通过分析页面会发现该页面中的新闻数据都是动态加载出来的,并且通过抓包工具抓取数据可以发现动态数据也不是ajax请求获取的动态数据(因为没有捕获到ajax请求的数据包),那么只剩下一种可能,该动态数据是js动态生成的. 2.通过抓包工具查找到底数据是由哪个js请求产生的动态

如何进行js动态生成option?如何实现二级连动?

何为二级连动? 首先要明白什么是二级连动!顾名思义,就是一个动,另外一个也跟着一起动 看下面的例子: 这里有一个"市级"的选择列表框,还有一个"县级"的选择列表框,如果"市级"的选择列表框中的值发现变化,那么会连带"县级"的列表框发生变化. function selectOrg(){         var selectNow = document.getElementById("city");      

js动态生成下拉列表

经常需要用到js动态生成下拉列表的功能,记录下来备用. 示例需求:通过ajax请求,从后台获取用户姓名列表,并添加到下拉列表中.js代码如下: 1 function getNameList(){ 2 //如果是类似三级联表的功能,则需在刚开始是对下拉列表进行初始化,如: 3 $("#nameList").html("<option value='0'>请选择姓名</option>"); 4 $.getJSON(url+"getNam

动态生成数据--零散烈士陵园【广宁县】

C#动态生成数据篇: 第一篇:测试动态生成数据(测试篇): TODO: 关于测试篇:主要讲解理清业务思路,下一篇:动态生成数据(依据业务需求): TODO: 1,输入生成数据 2,两种方式生成动态数据(这里采用服务器端应用程序生成数据) 讲解篇:1,服务端aspx,2,服务端后台 1,服务端aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LSLSM.aspx.cs"

JS动态生成表格后 合并单元格

JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单元格操作,在做之前也试着google下,但是网上没有碰到这方面的需求,所以自己写了一个简单的.用文字描述需求太费劲了,如下图所示: 1. 没有合并之前的图如下: 2. 合并之后的图如下: 如上所示:是根据相邻的编号相同 进行单元格合并. 先看看实现后的效果再聊吧! JSfiddle链接地址如下: 点

2)JS动态生成HTML元素的爬取

2)JS动态生成HTML元素的爬取 import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import cn.edu.hfut.dmic.webcollector.crawler.DeepCrawler; import cn.edu.hfut.dmic.webcollector.model.

JS动态生成Input文本框 并获取文本框值

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns= "http://www.w3.org/1999/xhtml" > <head> <meta http-equiv= "Conte

js动态生成css代码

用js动态生成css代码 有时候我们需要利用js来动态生成页面上style标签中的css代码,方法很直接,就是直接创建一个style元素,然后设置style元素里面的css代码,最后把它插入到head元素中.但有些兼容性问题我们需要解决.首先在符合w3c标准的浏览器中我们只需要把要插入的css代码作为一个文本节点插入到style元素中即可,而在IE中则需要利用style元素的styleSheet.cssText来解决.还需要注意的就是在有些版本IE中一个页面上style标签数量是有限制的,如果超