欢迎使用CSDN-markdown编辑器

阿里测评题2017

采用面向对象实现删除功能:
思路:建立一个对象,存储数据。类似于数据库的概念。然后建立一个模板,用来对对象进行遍历实现内容的初始化。接着设置点击动作,采用事件委托机制来优化性能并在DOM结构改变时也能绑定事件。
注意:没有理解其中的Contact是什么意思。后期会更新一个面向对象的版本。


代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
    <title>Title</title>
    <style>
        *{padding:0;margin:0;}
        .head,li div{display: inline-block;text-align: center;}
        li{margin-top:10px;}
        li .id,li .sex,.id,.sex{width:30px;}
        li .name,.name{width:40px;}
        li .tel,.tel{width:120px;}
        li .del,.del{width:15px;}
        ul{list-style: none;}
        .user-delete{cursor: pointer;}
    </style>
</head>
<body>
<div id="J_container">
    <div class="record_head">
        <div class="head id">序号</div>
        <div class="head name">姓名</div>
        <div class="head sex">性别</div>
        <div class="head tel">电话</div>
        <div class="head province">省份</div>
        <div class="head">操作</div>
    </div>
    <ul id="J_List"></ul>
</div>
<script>
    // 此处也可换成ES6的写法
    function Contact(){
        this.init();
    }
    window.onload = function () {
        var oUl = document.getElementById('J_List');
        var aLi = oUl.getElementsByTagName('li');
        //将对象写入数组中
        var objectArr = [
            {id:1,name:'张三',sex:'男',tel:'13788888888',province:'浙江'},
            {id:2,name:'李四',sex:'女',tel:'13788887777',province:'四川'},
            {id:3,name:'王二',sex:'男',tel:'13788889999',province:'广东'}
        ];
        //建立模板
        var template = function (objectArr) {
            //根据对象中的信息生成li信息列表;
            for (var i = 0; i < objectArr.length; i++) {
                var oLi = document.createElement('li');
                var id = document.createElement('div');
                id.className = 'id';
                id.innerHTML = objectArr[i].id;
                oLi.appendChild(id);
                var Name = document.createElement('div');
                Name.className = 'name';
                Name.innerHTML = objectArr[i].name;
                oLi.appendChild(Name);
                var sex = document.createElement('div');
                sex.className = 'sex';
                sex.innerHTML = objectArr[i].sex;
                oLi.appendChild(sex);
                var tel = document.createElement('div');
                tel.className = 'tel';
                tel.innerHTML = objectArr[i].tel;
                oLi.appendChild(tel);
                var province = document.createElement('div');
                province.className = 'province';
                province.innerHTML = objectArr[i].province;
                oLi.appendChild(province);
                var userDelete = document.createElement('div');
                userDelete.className = 'user-delete';
                userDelete.innerHTML = '删除';
                oLi.appendChild(userDelete);
                oUl.appendChild(oLi); //放入到UL中
            }
        };
        template(objectArr);//初始化内容
        //为了减少DOM操作,采用事件委托机制,设置点击动作,点击时改变对象,更新模板。
        oUl.onclick = function (event) {
            var ev = event||window.event;
            var target = ev.target||ev.srcElement;
            if(target.nodeName.toLowerCase() == 'div'){
                oUl.innerHTML = '';  //每次点击删除动作都清空一下,避免重复产生列表
                objectArr.splice(this.index, 1); //删除对应数组中的对象
                template(objectArr); //重新渲染模板
            }
        };
    }
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值