标签:操作 数据 方法 驱动 ext 入参 abs length meta
实现简单的面向对象方法来管理歌曲信息的增删改查。
数据驱动思想,也可以理解单项数据绑定,既:数据发生变化,页面也跟着变化;
思路:
使用构造函数来存储数据信息;
使用原型来存储方法(增删改查);
修改方式中方法使用到的数据,由变量转为对象的属性;
代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .container { margin: 100px auto; width: 850px; border: 1px solid #dad8d8; /*height: 100%;*/ } .songslist-main, .songslist-header { position: relative; width: 100%; text-align: center; } .songslist-header { height: 30px; border-bottom: 1px solid #dad8d8; line-height: 30px; background-color: #def; } .songslist-name { position: absolute; width: 40%; height: 100%; border-right: 1px solid #dad8d8; } .songslist-singer { position: absolute; left: 40%; width: 50%; height: 100%; border-right: 1px solid #dad8d8; } .songslist-option { position: absolute; left: 90%; width: 10%; height: 100%; } .songslist-main { background-color: #fff; height: 100%; } .songslist-main .songslist-name{ height: 50px; line-height: 50px; border: 0; } .songslist-main .songslist-singer{ height: 50px; line-height: 50px; border: 0; } .songslist-single { height: 50px; } </style> </head> <body> <div class="container"> <div class="songslist-op"> <label for="txtAddSName">歌曲名:</label><input type="text" id="txtAddSName" /> <label for="txtAddSinger">歌手:</label><input type="text" id="txtAddSinger" /> <button id="btnAdd">添加</button> <button id="btnRemove">删除</button> </div> <div class="songslist-header"> <div class="songslist-name">歌曲名称</div> <div class="songslist-singer">歌手</div> <div class="songslist-option">操作</div> </div> <div class="songslist-main" id="c"> <div class="songslist-single"> <div class="songslist-name">歌曲名称</div> <div class="songslist-singer">歌手</div> </div> <div class="songslist-single"> <div class="songslist-name">歌曲名称</div> <div class="songslist-singer">歌手</div> </div> <div class="songslist-single"> <div class="songslist-name">歌曲名称</div> <div class="songslist-singer">歌手</div> </div> <div class="songslist-single"> <div class="songslist-name">歌曲名称</div> <div class="songslist-singer">歌手</div> </div> </div> </div> <script type="text/javascript"> var SongsMagList=function(list){ this.SongsList=list||[]; this.render(); } SongsMagList.prototype={ add:function(songInfo){ this.SongsList.push(songInfo); this.render(); }, del:function(sName){ var SongsList=this.SongsList; for(var i=0;i<SongsList.length;i++){ if (SongsList[i].sName===sName) { SongsList.splice(i,1); break; }; } this.render(); }, update:function(sName,newName){ var SongsList=this.SongsList; for(var i=0;i<SongsList.length;i++){ if (SongsList[i].sName===sName) { SongsList[i].sSinger=newName; break; }; } this.render(); }, select:function(sName){ var SongsList=this.SongsList,msg=null; for(var i=0;i<SongsList.length;i++){ if (SongsList[i].sName===sName) { msg=SongsList[i].sSinger; break; }; } this.render(); console.log(msg||"没有查询到该歌曲的信息"); } } // 给原型对象添加一个 render方法 将数据渲染 封装了一个页面渲染的方法 SongsMagList.prototype.render=function(){ // 因为操作的都是 songslist中的数据 增删改查 也是使用songslist中的数据 var SongsList=this.SongsList; var htmlArr=[]; // 传入参数 SongsList.forEach(function(songInfo){ // songInfo 就是每一个歌曲信息对象 形参 htmlArr.push(‘<div class="songslist-single">‘); htmlArr.push(‘<div class="songslist-name">‘+songInfo.sName+‘</div>‘); htmlArr.push(‘<div class="songslist-singer">‘+songInfo.sSinger+‘</div>‘); htmlArr.push(‘</div>‘); }); document.querySelector(‘#c‘).innerHTML=htmlArr.join(""); } // var s1 = new SongsMagList([ // {sName: "痴心绝对", sSinger: "李圣杰"}, // { sName: "南山南", sSinger: "马頔"} // ]); // // 测试增删改查 // s1.add({sName: "最炫民族风", sSinger: "凤凰传奇"}); // // console.log(s1); // s1.render(); // console.log(s1); // s1.select("南山南"); // console.log(s1); // s1.del("南山南"); // console.log(s1); // s1.update("南山南","madi"); // console.log(s1); // // // var s1=new SongsMagList(); // 添加 新增歌曲事件 document.querySelector("#btnAdd").onclick=function(){ var name=document.querySelector("#txtAddSName").value; var singet=document.querySelector("#txtAddSinger").value; s1.add({sName: name, sSinger: singet}) } //添加 找到歌曲信息 删除对应的问题 document.querySelector("#btnRemove").onclick=function(){ var name=document.querySelector("#txtAddSName").value; s1.del(name); } </script> </body> </html>
标签:操作 数据 方法 驱动 ext 入参 abs length meta
原文地址:http://www.cnblogs.com/mada/p/6081610.html