页面中如下格式的人员信息表格:
表格每行的HTML结构为:
<tr> <td><input type="checkbox"></td> <td>2</td> <td>李斯</td> <td>43</td> <td>陕西</td></tr>
假定表格的元素id为person-list,奇数行的class名为odd。 请实现如下功能:
1、选中单选框,点击删除时对应行消失;
2、点击排序时,按照升序对表格中的每一行进行排序;
3、点击筛选,籍贯处会变成一个下拉框,选项值为当前表格中锁包含的省份名称,选中某个省份,展示对应省份的人员信息
实现代码:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>人员信息表格</title> <style type="text/css"> body { font-family: "arial", sans-serif; } #person-list { width: 80%; margin-left: 10%; margin-right: 10%; } #person-list thead { font-weight: bold; } #person-list button { background-color: transparent; border: 0; font-weight: bold; font-size: small; padding-left: 0; color: #6ba9ee; } #person-list thead tr td { border-bottom: 1px #ccc solid; } #person-list tbody tr td:nth-child(2) { font-weight: bold; } #person-list tbody tr td { border-top: 1px #ccc solid; padding-top: 5px; padding-bottom: 5px; } #person-list tbody tr:nth-child(2n+1) { background-color: #eee; } </style> <script type="text/javascript"> window.onload=function(){ if (!document.getElementsByClassName) {//由于较低版本的IE不识别这个。 document.getElementsByClassName=function(cls){ var ret=[]; var eles=document.getElementsByTagName('*'); for(var i=0,len=eles.length;i<len;i++){//indexOf()返回的是字母在字符串中的下标,>=0代表存在 if (eles[i].className===cls /*===是严格等于*/ ||eles[i].className.indexOf(cls+'')>=0//当比较'aaa'和'aaa '时 ||eles[i].className.indexOf(''+cls+'')>=0///比较'aaa'和'bbb aaa ccc'时 ||eles[i].className.indexOf(''+cls)>=0///比较'aaa'和' aaa'时 ) { ret.push(eles[i]); } } return ret; } } var checks = document.getElementsByTagName('input'); var tbody = document.getElementsByTagName("tbody")[0]; var trs = tbody.getElementsByTagName('tr'); var remove = document.getElementById("remove"); var sort = document.getElementById("sort"); var select = document.getElementById("select"); remove.onclick = function(){ //删除选中行 for(var i = checks.length-1; i >= 0;i--){ //因为removeChild的时候,长度会变化,所以不能以小于length作为判断条件,应该从后往前扫描 if(checks[i].checked){ tbody.removeChild(checks[i].parentNode.parentNode); } } //修改序号 for(var i = 0;i < trs.length; i++){ var td=trs[i].getElementsByTagName("td")[1]; td.innerHTML=i+1; } }; sort.onclick=function(){ //循环遍历,后面比它小的就插入到它前面去 for(var i=0;i < trs.length; i++){ var td=trs[i].getElementsByTagName("td")[3]; for(var j=i;j < trs.length;j++){ var tdd=trs[j].getElementsByTagName("td")[3]; if((td.innerHTML - tdd.innerHTML)>0){ td.parentNode.parentNode.insertBefore(tdd.parentNode,td.parentNode); } } } //修改序号 for(var i=0;i < trs.length;i++){ var td=trs[i].getElementsByTagName("td")[1]; td.innerHTML=i+1; } }; select.onclick=function(){ //如果已经筛选过,页面中有下拉框了就不要再执行此函数了。 if(document.getElementsByTagName('select').length>0) return false; var provinces = []; //把所有的省份取出来,存放到数组里 for(var i=0;i < trs.length;i++){ var td=trs[i].getElementsByTagName("td")[4]; var prov=td.innerHTML; provinces.push(prov); } //去重 for(var j=0;j< provinces.length;j++){ for(var k=provinces.length;k>j;k--){ //同理,因为长度会发生变化,所以从后往前算 if(provinces[j] === provinces[k]){ provinces.splice(k,1); } } } //创建selectElem下拉框元素,option为省份 var selectElem = document.createElement("select"); for(var z = 0;z < provinces.length;z++){ var option=document.createElement("option"); option.innerHTML=provinces[z]; option.value=provinces[z]; selectElem.appendChild(option); } var childNodes=select.parentNode.childNodes; //去掉籍贯两个字 for(var x= 0; x< childNodes.length;x++){ if(childNodes[x].nodeType === 3){ childNodes[x].parentNode.removeChild(childNodes[x]); } } //在按钮之前插入select下拉框 select.parentNode.insertBefore(selectElem,select); //监控下拉框的option的点击事件,注意是下拉框的onchange,而不是option的onclick selectElem.onchange = function(){ for(var i =0 ;i< trs.length;i++){ trs[i].style.display="none" ; if(trs[i].getElementsByTagName("td")[4].innerHTML == selectElem.value){ trs[i].style.display = ""; } } }; }; } </script></head><body> <table id="person-list"> <thead> <tr> <td> <button id="remove">删除</button> </td> <td>序号</td> <td>姓名</td> <td>年龄 <button id="sort">排序</button> </td> <td>籍贯 <button id="select">筛选</button> </td> </tr> </thead> <tbody> <tr> <td> <input type="checkbox"/> </td> <td>1</td> <td>张三</td> <td>24</td> <td>北京</td> </tr> <tr> <td><input type="checkbox"/> </td> <td>2</td> <td>李斯</td> <td>43</td> <td>陕西</td> </tr> <tr> <td><input type="checkbox"/> </td> <td>3</td> <td>韩信</td> <td>49</td> <td>湖北</td> </tr> <tr> <td><input type="checkbox"/> </td> <td>4</td> <td>宋江</td> <td>43</td> <td>山东</td> </tr> <tr> <td><input type="checkbox"/> </td> <td>5</td> <td>李逵</td> <td>38</td> <td>青海</td> </tr> <tr> <td><input type="checkbox"/> </td> <td>6</td> <td>林冲</td> <td>42</td> <td>北京</td> </tr> </tbody> </table></body></html>
相关推荐:
Atas ialah kandungan terperinci 前端案例:使用js实现表格对应行删除、排序、筛选. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Trend masa depan Python dan JavaScript termasuk: 1. Kedua -duanya akan terus mengembangkan senario aplikasi dalam bidang masing -masing dan membuat lebih banyak penemuan dalam prestasi.

Kedua -dua pilihan Python dan JavaScript dalam persekitaran pembangunan adalah penting. 1) Persekitaran pembangunan Python termasuk Pycharm, Jupyternotebook dan Anaconda, yang sesuai untuk sains data dan prototaip cepat. 2) Persekitaran pembangunan JavaScript termasuk node.js, vscode dan webpack, yang sesuai untuk pembangunan front-end dan back-end. Memilih alat yang betul mengikut keperluan projek dapat meningkatkan kecekapan pembangunan dan kadar kejayaan projek.

Ya, teras enjin JavaScript ditulis dalam C. 1) Bahasa C menyediakan prestasi yang efisien dan kawalan asas, yang sesuai untuk pembangunan enjin JavaScript. 2) Mengambil enjin V8 sebagai contoh, terasnya ditulis dalam C, menggabungkan kecekapan dan ciri-ciri berorientasikan objek C. 3) Prinsip kerja enjin JavaScript termasuk parsing, penyusun dan pelaksanaan, dan bahasa C memainkan peranan penting dalam proses ini.

JavaScript adalah di tengah -tengah laman web moden kerana ia meningkatkan interaktiviti dan dinamik laman web. 1) Ia membolehkan untuk menukar kandungan tanpa menyegarkan halaman, 2) memanipulasi laman web melalui Domapi, 3) menyokong kesan interaktif kompleks seperti animasi dan drag-and-drop, 4) mengoptimumkan prestasi dan amalan terbaik untuk meningkatkan pengalaman pengguna.

C dan JavaScript mencapai interoperabilitas melalui webassembly. 1) Kod C disusun ke dalam modul WebAssembly dan diperkenalkan ke dalam persekitaran JavaScript untuk meningkatkan kuasa pengkomputeran. 2) Dalam pembangunan permainan, C mengendalikan enjin fizik dan rendering grafik, dan JavaScript bertanggungjawab untuk logik permainan dan antara muka pengguna.

JavaScript digunakan secara meluas di laman web, aplikasi mudah alih, aplikasi desktop dan pengaturcaraan sisi pelayan. 1) Dalam pembangunan laman web, JavaScript mengendalikan DOM bersama -sama dengan HTML dan CSS untuk mencapai kesan dinamik dan menyokong rangka kerja seperti JQuery dan React. 2) Melalui reaktnatif dan ionik, JavaScript digunakan untuk membangunkan aplikasi mudah alih rentas platform. 3) Rangka kerja elektron membolehkan JavaScript membina aplikasi desktop. 4) Node.js membolehkan JavaScript berjalan di sisi pelayan dan menyokong permintaan serentak yang tinggi.

Python lebih sesuai untuk sains data dan automasi, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python berfungsi dengan baik dalam sains data dan pembelajaran mesin, menggunakan perpustakaan seperti numpy dan panda untuk pemprosesan data dan pemodelan. 2. Python adalah ringkas dan cekap dalam automasi dan skrip. 3. JavaScript sangat diperlukan dalam pembangunan front-end dan digunakan untuk membina laman web dinamik dan aplikasi satu halaman. 4. JavaScript memainkan peranan dalam pembangunan back-end melalui Node.js dan menyokong pembangunan stack penuh.

C dan C memainkan peranan penting dalam enjin JavaScript, terutamanya digunakan untuk melaksanakan jurubahasa dan penyusun JIT. 1) C digunakan untuk menghuraikan kod sumber JavaScript dan menghasilkan pokok sintaks abstrak. 2) C bertanggungjawab untuk menjana dan melaksanakan bytecode. 3) C melaksanakan pengkompil JIT, mengoptimumkan dan menyusun kod hot-spot semasa runtime, dan dengan ketara meningkatkan kecekapan pelaksanaan JavaScript.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna
