javascript表格操作大全:表格排序/倒序、动态添加列、批量删除、删除一行、隔行变色、鼠标悬浮切换背景色、全选/反选。(IE、火狐都兼容)

WPS JS宏示例——工作表排序 “我那么喜欢你,你却要我当见不得光的情人+提款机” 对工作表进行排序是很常见的需求了,这里直接写个通用的宏给不熟悉的朋友使用: /** * @param {object|string} Workbook 工作薄名称 * @returns {array} obj.visible 显示的工作表名称 * @returns {array} obj.hidden 隐藏的工作表名称 * @example * let foo = get_names_of_sheets("工作薄1").visible * // [. 阅读详情

表格.html

[javascript] view plain copy
 print?
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  5. <title>表格操作</title>  
  6.     <script type= "text/javascript" src="domutil.js" ></script>  
  7. </head>  
  8.   
  9. <body>    
  10.       
  11.                 <!--以下数据纯属虚构-->  
  12.   
  13.     <table id="tab" border="1" style =" align:center;text-align:center ">  
  14.         <thead style="background:#0000FF" onmouseover="over(this)" onmouseout="out(this)">  
  15.             <tr>  
  16.                 <th><input type="checkbox" name="quan" onclick="quan()" style="cursor:pointer"/>全选</th>  
  17.                 <th onclick="sortTable('tab',1,'int')" style="cursor:pointer">编号</th>  
  18.                 <th onclick="sortTable('tab',2,'汉字')" style="cursor:pointer">编程语言</th>  
  19.                 <th onclick="sortTable('tab',3,'汉字')" style="cursor:pointer">所属公司</th>  
  20.                 <th onclick="sortTable('tab',4,'float')" style="cursor:pointer">市场份额</th>  
  21.                 <th onclick="sortTable('tab',5,'date')" style="cursor:pointer">诞生日期</th>  
  22.                 <th style="cursor:pointer">操作</th>  
  23.             </tr>  
  24.         </thead>  
  25.         <tbody id="tbody">  
  26.             <tr style="background:#00FF00" onmouseover="over(this)" onmouseout="out(this)">  
  27.                 <td><input type="checkbox" name="checkbox" /></td>  
  28.                 <td width=100 id="ID">4</td>  
  29.                 <td id="name" width="100">Java</td>  
  30.                 <td id="company" width="100" >甲骨文公司</td>  
  31.                 <td id="age" width="100">47.6</td>  
  32.                 <td id="date" width="100">1970/09/09</td>  
  33.                 <td ><input type="button" value="删除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  34.             </tr>  
  35.             <tr style="background:#00FFFF" onmouseover="over(this)" onmouseout="out(this)">  
  36.                 <td><input type="checkbox" name="checkbox" /></td>  
  37.                 <td width=100 id="ID">6</td>  
  38.                 <td id="name" width="100">ASP</td>  
  39.                 <td id="company" width="100">微软公司</td>  
  40.                 <td id="age" width="100">30.3</td>  
  41.                 <td id="date" width="100">1980/09/09</td>  
  42.                 <td ><input type="button" value="删除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  43.             </tr>  
  44.             <tr style="background:#00FF00" onmouseover="over(this)" onmouseout="out(this)">  
  45.                 <td><input type="checkbox" name="checkbox" /></td>  
  46.                 <td width=100 id="ID">3</td>  
  47.                 <td id="name" width="100">PHP</td>  
  48.                 <td id="company" width="100">公司Zend</td>  
  49.                 <td id="age" width="100">22.1</td>  
  50.                 <td id="date" width="100">1994/07/09</td>  
  51.                 <td ><input type="button" value="删除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  52.             </tr>  
  53.             <tr style="background:#00FFFF" onmouseover="over(this)" onmouseout="out(this)">  
  54.                 <td><input type="checkbox" name="checkbox" /></td>  
  55.                 <td width=100 id="ID">1</td>  
  56.                 <td id="name" width="100">Objective-C</td>  
  57.                 <td id="company" width="100" >Stepstone公司</td>  
  58.                 <td id="age" width="100">35.9</td>  
  59.                 <td id="date" width="100">1980/01/01</td>  
  60.                 <td ><input type="button" value="删除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  61.             </tr>  
  62.             <tr style="background:#00FF00" onmouseover="over(this)" onmouseout="out(this)">  
  63.                 <td><input type="checkbox" name="checkbox" /></td>  
  64.                 <td width=100 id="ID">5</td>  
  65.                 <td id="name" width="100">VB</td>  
  66.                 <td id="company" width="100">美国微软</td>  
  67.                 <td id="age" width="100">32.7</td>  
  68.                 <td id="date" width="100">1991/09/09</td>  
  69.                 <td ><input type="button" value="删除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  70.             </tr>  
  71.             <tr style="background:#00FFFF" onmouseover="over(this)" onmouseout="out(this)">  
  72.                 <td><input type="checkbox" name="checkbox" /></td>  
  73.                 <td width=100 id="ID">2</td>  
  74.                 <td id="name" width="100">javascript</td>  
  75.                 <td id="company" width="100">Netscape</td>  
  76.                 <td id="age" width="100">33.8</td>  
  77.                 <td id="date" width="100">1992/06/09</td>  
  78.                 <td ><input type="button" value="删除" onclick="deleteRow(this.parentNode.parentNode)"/></td>  
  79.             </tr>  
  80.         </tbody>  
  81.         <tfoot style="background:#C0C0C0">  
  82.             <tr onmouseover="over(this)" onmouseout="out(this)">  
  83.                 <td><input type="checkbox" name="fan" onclick="fan()"/>反选</td>  
  84.                 <td colspan="6">  
  85.                 <input type="button" value="添加数据" onclick="addRow()" />       
  86.                 <input type="button" value="删除选中行" onclick="deleteChecked()"/>  
  87.                 </td>  
  88.             </tr>  
  89.         </tfoot>  
  90.     </table>  
  91.       
  92. </body>   
  93. <script type="text/javascript">   
  94.         /* 
  95.         全局变量 
  96.         ID:    保存插入数据的编号 
  97.         color:保存原来的背景色 
  98.         */  
  99.         var ID,color;  
  100.         window.onload = function(){  
  101.             var myTab = $q("#tab");  
  102.             ID = myTab.rows.length-1;  
  103.         }  
  104.         //鼠标悬浮在某元素时  
  105.         function over(node){  
  106.             color = node.style.backgroundColor;  
  107.             node.style.backgroundColor = '#FF00FF';  
  108.         }  
  109.         //鼠标离开某元素时  
  110.         function out(node){  
  111.             node.style.backgroundColor = color;  
  112.         }  
  113.         //全选  
  114.         function quan(){  
  115.             var checkArr = $q("$checkbox"); //得到tbody行的集合  
  116.             var qArr = $q("$quan");   
  117.             if(qArr[0].checked){ //如果是全选,设置全部选中  
  118.                 for(var i=0;i<checkArr.length;i++){     
  119.                     checkArr[i].checked = true;  
  120.                 }  
  121.             }else{  //如果没有全选,设置全部没选中  
  122.                 for(var i=0;i<checkArr.length;i++){    
  123.                     checkArr[i].checked = false;  
  124.                 }  
  125.             }  
  126.         }  
  127.   
  128.         //反选  
  129.         function fan(){  
  130.             var checkArr = $q("$checkbox"); //得到tbody行的集合  
  131.             for(var i=0;i<checkArr.length;i++){  //循环将所有行反选  
  132.                 checkArr[i].checked = checkArr[i].checked ? false : true;  
  133.             }  
  134.         }  
  135.   
  136.         //添加一行数据  
  137.         function addRow(){  
  138.             var myTab = $q("#tab");  
  139.             var rowLength = myTab.rows.length;  
  140.             var newRow = document.createElement("tr"); //创建一行  
  141.             //设置隔行变色  
  142.             if(rowLength%2 == 1){  
  143.                 newRow.style.background = "#00FFFF";  
  144.             }else{  
  145.                 newRow.style.background = "#00FF00";  
  146.             }  
  147.             if(newRow.addEventListener){  
  148.                 //给创建的行添加鼠标悬浮的事件  
  149.                 newRow.addEventListener("mouseover",function(){over(newRow);},false);  
  150.                 //给创建的行添加鼠标离开的事件  
  151.                 newRow.addEventListener("mouseout",function(){out(newRow);},false);  
  152.             }else if(newRow.attachEvent){  
  153.                 //给创建的行添加鼠标悬浮的事件  
  154.                 newRow.attachEvent("onmouseover",function(){over(newRow);});  
  155.                 //给创建的行添加鼠标离开的事件  
  156.                 newRow.attachEvent("onmouseout",function(){out(newRow);});  
  157.             }else{  
  158.                 //给创建的行添加鼠标悬浮的事件  
  159.                 newRow.onmouseover = function(){over(newRow);};  
  160.                 //给创建的行添加鼠标离开的事件  
  161.                 newRow.onmouseout = function(){out(newRow);};  
  162.             }    
  163.             //创建多列  
  164.             var newCell1 = document.createElement("td");  
  165.             newCell1.innerHTML = '<input type="checkbox" name="checkbox" />';  
  166.             var newCell2 = document.createElement("td");  
  167.             newCell2.innerHTML = ID;  
  168.             ID += 1;  
  169.             var newCell3 = document.createElement("td");  
  170.             newCell3.innerHTML = prompt("请输入编程语言:","");  
  171.             var newCell4 = document.createElement("td");  
  172.             newCell4.innerHTML = prompt("请输入所属公司:","");  
  173.             var newCell5 = document.createElement("td");  
  174.             newCell5.innerHTML = prompt("请输入市场份额:","");  
  175.             var newCell6 = document.createElement("td");  
  176.             newCell6.innerHTML = prompt("请输入诞生日期:","");  
  177.             var newCell7 = document.createElement("td");  
  178.             newCell7.innerHTML = '<input type="button" value="删除" onclick="deleteRow(this.parentNode.parentNode)" />' ;  
  179.             //将创建的多列添加到行  
  180.             newRow.appendChild(newCell1);  
  181.             newRow.appendChild(newCell2);  
  182.             newRow.appendChild(newCell3);  
  183.             newRow.appendChild(newCell4);  
  184.             newRow.appendChild(newCell5);  
  185.             newRow.appendChild(newCell6);  
  186.             newRow.appendChild(newCell7);  
  187.             var tbody = myTab.tBodies[0]; //获取表格的tbody  
  188.             tbody.appendChild(newRow);  //将创建的行添加到表格body里  
  189.         }   
  190.         //删除一行数据  
  191.         function deleteRow(currentRow){  
  192.             var tab = $q("#tab"); //获得表格节点  
  193.             tab.deleteRow(currentRow.rowIndex); //删除选中的行  
  194.         }  
  195.         //删除多行数据  
  196.         function deleteChecked(){  
  197.             var tab = $q("#tab"); //获得表格节点  
  198.             var checkArr = $q("$checkbox");  //得到tbody行的集合  
  199.             for(var i=0;i<checkArr.length;i++){  
  200.                 if(checkArr[i].checked){  //用循环删除选中的行  
  201.                     var index = checkArr[i].parentNode.parentNode.rowIndex;  
  202.                     tab.deleteRow(index);  
  203.                 }  
  204.             }  
  205.         }  
  206.         //转换数据类型,v为值,dataType为数据类型  
  207.         function convert(v,dataType){  
  208.             switch(dataType){  
  209.                 case "int":  
  210.                     return parseInt(v);  
  211.                 case "float":  
  212.                     return parseFloat(v);  
  213.                 case "date":  
  214.                     return (new Date(Date.parse(v)));  
  215.                 default:  
  216.                     return v.toString();  
  217.             }  
  218.         }  
  219.         //排序函数,index为索引,type为数据类型  
  220.         function pai(index,dataType){  
  221.             if(dataType === "汉字"){  
  222.                 return function compare(a,b){  
  223.                             var str1 = convert(a.cells[index].innerHTML,dataType);   
  224.                             var str2 = convert(b.cells[index].innerHTML,dataType);  
  225.                             return str1.localeCompare(str2);  
  226.                         };  
  227.             }else{  
  228.                 return function compare(a,b){  
  229.                             //var str1 = convert(a.cells[index].firstChild.nodeValue,dataType);  
  230.                             //var str2 = convert(b.cells[index].firstChild.nodeValue,dataType);  
  231.                             var str1 = convert(a.cells[index].innerHTML,dataType); //两种方法效果一样  
  232.                             var str2 = convert(b.cells[index].innerHTML,dataType);  
  233.                             if(str1 < str2){  
  234.                                 return -1;  
  235.                             }else if(str1 > str2){  
  236.                                 return 1;  
  237.                             }else{   
  238.                                 return 0;  
  239.                             }  
  240.                         };  
  241.             }  
  242.         }  
  243.         //排序的过程  
  244.         function sortTable(tableID,index,dataType){  
  245.             var tab = $q("#"+tableID); //获取表格的ID  
  246.             var td = tab.tBodies[0]; //获取表格的tbody  
  247.             var newRows = td.rows;   //获取tbody里的所有行  
  248.             var arr = new Array();   //定义arr数组用于存放tbody里的行  
  249.             //用循环将所有行放入数组  
  250.             for(var i=0;i<newRows.length;i++){  
  251.                 arr.push(newRows[i]);  
  252.             }  
  253.             //判断最后一次排序的列是否与现在要进行排序的列相同,如果是就反序排列  
  254.             if(tab.sortCol == index){  
  255.                 arr.reverse();  
  256.             }else{   
  257.                 //使用数组的sort方法,传进排序函数  
  258.                 arr.sort(pai(index,dataType));  
  259.             }  
  260.             var oFragment = document.createDocumentFragment(); //创建文档碎片  
  261.             for (var i=0; i < arr.length; i++) {  //把排序过的aTRs数组成员依次添加到文档碎片  
  262.                 if(i%2 == 1){  
  263.                     arr[i].style.background = "#00FFFF";  
  264.                     oFragment.appendChild(arr[i]);  
  265.                 }else{  
  266.                     arr[i].style.background = "#00FF00";  
  267.                     oFragment.appendChild(arr[i]);  
  268.                 }  
  269.             }  
  270.             td.appendChild(oFragment); //把文档碎片添加到tbody,完成排序后的显示更新  
  271.             tab.sortCol = index;  //记录最后一次排序的列索引  
  272.         }  
  273.     </script>  
  274. </html>  

domutil.js

(此js为课堂笔记整理而成,有部分代码本次没有用到的)

[javascript] view plain copy
 print?
  1. var CustomFunctions = {  
  2.     //获取子节点的集合(ie,ff通用)  
  3.     getChildNodes:function(node){  
  4.         var arr = [];  
  5.         var nodes = node.childNodes;  
  6.         for(var i in nodes){  
  7.             if(nodes[i].nodeType == 1){ //查找元素节点  
  8.                 arr.push(nodes[i]);  
  9.             }  
  10.         }  
  11.         return arr;  
  12.     },  
  13.     //获取第一个元素子节点(ie,ff通用)  
  14.     getFirstElementChild : function(node){  
  15.         return node.firstElementChild ? node.firstElementChild : node.firstChild ;  
  16.     },  
  17.     //获取最后一个元素子节点(ie,ff通用)  
  18.     getLastElementChild : function(node){  
  19.         return node.lastElementChild ? node.lastElementChild : node.lastChild ;  
  20.     },  
  21.     //获取上一个相邻节点(ie,ff通用)  
  22.     getPreviousSibling : function(node){  
  23.         //找到上一个节点就返回节点,没找到就返回null  
  24.         do{  
  25.             node = node.previousSibling;  
  26.         }while(node && node.nodeType!=1)  
  27.         return node;  
  28.     },  
  29.     //获取下一个相邻节点 (ie,ff通用)  
  30.     getNextSibling : function(node){  
  31.         //找到下一个节点就返回节点,没找到就返回null  
  32.         do{  
  33.             node = node.nextSibling;  
  34.         }while(node && node.nodeType!=1)  
  35.         return node;  
  36.     },  
  37.     //将元素插入到指定的node节点后面  
  38.     insertAfter : function(newNode,targetNode){  
  39.         if(newNode && targetNode){  
  40.             var parent = targetNode.parentNode;  
  41.             var nextNode = this.getNextSibling(targetNode);  
  42.             if(nextNode && parent){  
  43.                 parent.insertBefore(newNode,nextNode);  
  44.             }else{  
  45.                 parent.appendChild(newNode);  
  46.             }  
  47.         }  
  48.     }  
  49. };  
  50.   
  51. /*清除字符串前后的空格*/  
  52. String.prototype.trim=function(){  
  53.     return this.replace(/^\s*|\s*$/,"");  
  54. };  
  55.   
  56. /* 
  57. 查找元素: 
  58. $q("div"):bytagname 
  59. $q(".l"):byclassname 
  60. $q("#l"):byid 
  61. $q("$name"):byname 
  62. selector:选择符 
  63. parentElement:父元素 
  64. */  
  65. window.$q = function(selector,parentElement){  
  66.     if(selector && (typeof selector) === 'string'){  
  67.         selector = selector.trim();//去掉前后空格  
  68.         var parentEl = parentElement || document;  
  69.         var nodeArr = new Array();    
  70.         var firstChar = selector.substr(0,1);   //取得第一个字符  
  71.         //以#开头,表示根据ID查找  
  72.         if(firstChar === '#'){  
  73.             return parentEl.getElementById(selector.substr(1));  
  74.         }  
  75.         //以$开头,根据name查找  
  76.         else if(firstChar === '$'){  
  77.             var all = parentEl.getElementsByTagName("*");  
  78.             for(var i=0;i<all.length;i++){  
  79.                 var name = all[i].getAttribute("name");  
  80.                 if(name === selector.substr(1)){  
  81.                     nodeArr.push(all[i]);  
  82.                 }  
  83.             }  
  84.             delete i;  
  85.             return nodeArr;  
  86.         }  
  87.         //以.开头,根据class名查找  
  88.         else if(firstChar === '.'){  
  89.             var className = selector.substr(1);  
  90.             if(parentEl.getElementsByClassName){  
  91.                 return parentEl.getElementsByClassName(className);  
  92.             }  
  93.             else{  
  94.                 var childList = parentEl.getElementsByTagName("*");  
  95.                 for(var i=0;i<childList.length;i++){  
  96.                     var nodeClassName = childList[i].className;  
  97.                     var classNameArr = nodeClassName.split(' ');  
  98.                     for(var j=0;j<classNameArr.length;j++){  
  99.                         if(classNameArr[j]===className){  
  100.                             nodeArr.push(childList[i]);  
  101.                         }  
  102.                     }  
  103.                     delete j;  
  104.                 }  
  105.                 delete i;  
  106.                 return nodeArr;  
  107.             }  
  108.         }  
  109.         //否则,根据标签名查找  
  110.         else{  
  111.             return parentEl.getElementsByTagName(selector);  
  112.         }  
  113.           
  114.     }  
  115.     else{  
  116.         return document.all || document.getElementsByTagName("*");  
  117.     }  
  118.   
  119. };  
wps js宏操作表格自定义序列 wps js宏操作自定义序列列表。 阅读详情

相关推荐

利用MATLAB 4f光学系统,在Python中进行弗劳恩霍夫衍射和傅里叶面滤波——用镜头模拟光学图像处理。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

js表格中的DOM操作,隔行变色和添加、删除某一行,搜索数据

appenChild();首先要把添加的从父级删除,然后再添加到现在的位置 一、隔行变色 注意:表格尽量有标题,最好写上tbody. 表格中可以可以直接使用oTal.tBodies[0].rows[i],因为tBodies可以有多个,所以返回值是个数组,而thead,tfoot只有一个,所以返回的是一个值。rows是指行,cells是指列。 下面例子中有一个oldCol,这个变量的作用是存...

Alex十年的博客 2426

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

JS 案例 表格的操作

表格的操作 对表格完成如下操作: 1、表格隔行变色 2、鼠标移动上去变色 3、增加行 4、删除行 5、修改行 HTML代码片: <table id="tab"> <tr> <td>编号</td> <td>姓名</td> <td>操作</td> </tr> <tr> <td>001</td> <td&gt

suiferq的博客 387

通信行业CentOS 7内核网络栈优化:高并发连接下UDP/TCP性能调优与系统资源管理

内容概要:本文聚焦于CentOS 7系统在通信行业高并发场景下的性能调优实践,重点围绕内核网络栈优化展开,涵盖UDP/TCP缓冲区调整、文件句柄与连接跟踪表扩容、TIME_WAIT状态复用、软中断分布优化及tuned工具的自动化调优。通过具体配置参数和实际案例(如VoIP软交换系统)深入解析各项调优措施的设计原理与实施效果,有效解决高CPS下丢包、连接失败等问题,并展望了向云化、eBPF等动态智能调优方向的发展趋势。; 适合人群:从事通信系统运维、网络开发或Linux系统性能优化的技术人员,具备一定操作系统和网络基础知识,工作经验1年以上的中初级工程师。; 使用场景及目标:①应用于软交换、媒体网关、信令网关等高并发通信设备的系统调优;②解决UDP丢包、conntrack表满、TCP连接队列溢出等典型性能瓶颈;③提升系统在小包高频、低时延要求场景下的稳定性和吞吐能力。; 阅读建议:建议结合实际生产环境或测试平台同步验证文中配置,重点关注参数背后的物理意义(如BDP、softirq、conntrack机制),并配合ss、conntrack、dmesg等命令进行调优前后对比分析,确保安全可控地实施变更。

2024 《计算机网络》实验教学指导书.doc

2024 《计算机网络》实验教学指导书.doc

js实现排序算法的归纳

排序算法中最快的是快速排序算法,搜索算法中最快的是二分搜索算法。 快排 具体算法描述: 三步走 (1)在数据集之中,选择一个元素作为"基准"(pivot)。 (2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。 (3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。 实现: var quic...

jiang_my的博客 394

不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,提出了一套融合全局规划、动态避障与局部协同调整的综合路径规划方法。研究内容涵盖基于改进RRT算法与图论的全局路径规划、基于动态风险场和动态窗口法(DWA)的模型预测控制实现动态避障,以及基于分布式协同控制的多无人机局部路径协同策略。通过Matlab平台构建仿真环境,在多种典型城市交通场景下对所提方法进行了系统性验证,结果表明该方法在路径安全性、编队稳定性与任务效率方面表现优异。文章还深入探讨了算法的创新点与未来研究方向,为复杂城市环境下多无人机系统的自主协同提供了理论支撑与技术路径。; 适合人群:具备自动化、控制理论、计算机科学或相关领域基础知识,从事无人机系统、智能交通、路径规划、多智能体协同控制等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为城市空中交通系统中的多无人机安全、高效飞行提供可靠的路径规划解决方案;②支持在复杂、动态的城市场景中开展无人机自主导航、编队飞行与协同控制的技术研究与仿真验证。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法的具体实现细节、参数配置对性能的影响以及不同仿真场景下的实验设计,以深入理解各模块的集成逻辑与实际应用效果。

javascript表格操作大全:表格排序/倒序、动态添加列、批量删除、删除一行、隔行变色、鼠标悬浮切换背景色、全选/反选。(IE、火狐都兼容)...

表格.html &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&..

java开发指南博客 【转载】 175

【选址和定容】模拟退火改进多目标粒子群算法在分布式电源选址和定容中的应用【IEEE69节点】(Matlab代码实现)

内容概要:本文研究了模拟退火改进多目标粒子群算法在分布式电源选址和定容中的应用,以IEEE69节点配电系统为算例进行仿真分析。通过融合模拟退火算法的强全局搜索能力与粒子群算法的高效局部收敛特性,构建了一种改进的多目标优化算法,用于解决分布式电源在配电网中的最优位置选择与容量配置问题。研究旨在实现多重优化目标,包括最小化网络有功损耗、提升节点电压质量、增强系统运行的经济性与稳定性。文中详细阐述了多目标优化模型的数学构建、算法的改进机制与实现流程,并基于Matlab平台完成了算法编程与仿真验证,结果表明所提方法在求解质量和收敛性能上均优于传统算法。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力,从事配电网规划、分布式能源系统优化、智能优化算法应用等相关领域的科研人员、工程师以及高校研究生。; 使用场景及目标:①解决高比例分布式电源接入背景下配电网的科学规划问题;②为新型电力系统中源网协调设计提供有效的优化工具;③为相关领域的科研工作提供可复现、可拓展的算法模型与仿真代码实例,支持进一步的算法对比与功能升级。; 阅读建议:建议读者结合提供的Matlab代码与IEEE69节点标准数据,动手复现实验结果,深入理解算法的参数设置、迭代过程与多目标折衷分析方法,并可根据实际研究需求修改目标函数或引入新的约束条件以适应不同的应用场景。

CANopen PDO 配置實戰:3步完成0x1800-0x1A00物件字典映射與事件觸發

本文详细解析CANopen PDO配置实战,通过3个关键步骤完成0x1800-0x1A00对象字典映射与事件触发设置。重点介绍COB-ID位域解析、映射参数配置及事件触发优化,帮助工程师实现工业自动化设备间毫秒级实时数据交换,提升系统通信效率。

weixin_33709609的博客 379

js倒叙遍历并删除指定的值

假设你有一个 JavaScript 数组,并且想要倒序遍历它,并删除其中的特定值,你可以使用以下代码: const arr = [1, 2, 3, 4, 5, 3]; const targetValue = 3; for (let i = arr.length - 1; i >= 0; i--) { if (arr[i] === targetValue) { arr.splic...

weixin_42602368的博客 667

快速傅里叶变换(FFT)原理详解:从理论到实践

本文系统介绍了快速傅里叶变换(FFT)的理论与实践。首先阐述了傅里叶变换的数学定义和离散傅里叶变换(DFT)的矩阵表示,指出其O(N²)计算复杂度限制了实际应用。然后详细解析了Cooley-Tukey算法的核心思想,包括分治策略、蝶形运算原理和旋转因子的周期性特性,将复杂度降至O(Nlog₂N)。文章比较了按时间抽取(DIT)和按频率抽取(DIF)两种FFT算法实现,并讨论了FFT在信号处理等领域的应用及其局限性。通过理论分析和实例说明,展现了FFT如何成为现代数字信号处理的基石算法。

qq_42212808的博客 2923

js jq 删除动态加载的元素 js异步学习笔记

文章目录场景解决js的同步和异步学习笔记同步异步JS异步的实现GUI线程JS引擎线程定时器线程事件触发线程异步HTTP请求线程Event Loop浏览器的Event Loop定时器不准引入微任务Node.js的Event LoopsetImmediate和setTimeoutprocess.nextTick()总结 场景 因为bug的原因,需要删除单击后弹窗的第一行,因为是动态加载,代码比较复杂,找不到第一行的源代码,所以决定要在单击事件后删除第一行。 解决 function removePDFclic

LiN 1225

从UE4到Unity:双叶高光技术在角色皮肤渲染中的移植全流程

本文详细解析了将UE4中的双叶高光技术移植到Unity引擎的全流程。该技术通过模拟皮肤油脂层和真皮层的不同反射特性,能显著提升角色皮肤渲染的真实感。文章从核心原理、贴图资产处理、Shader代码重构到参数调校,提供了完整的跨引擎移植实战指南,帮助开发者实现高质量的皮肤质感还原。

alice7model的博客 476

在 SAP ABAP 里可靠地对接 FTP 服务器:从连接、命令到传输与排错的完整实战

本文详细介绍了在SAP ABAP中实现FTP文件交换的完整技术方案。文章首先解析了FTP协议的双连接特性(控制连接与数据连接),强调保持控制连接的重要性。随后详细说明了ABAP中FTP操作的四步标准流程:建立连接(包含HTTP_SCRAMBLE加密)、执行命令、断开连接和关闭RFC通道。文章提供了实战案例代码,演示如何将FTP文件复制到应用服务器再读取进内表处理,特别指出后台作业与前台操作的关键差异。最后总结了常见错误排查要点,包括连接模型、路径设置和资源释放等问题。全文通过SAP标准函数模块的调用顺序、典

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 303

javawebday05补充(动态显示时间 全反选 添加遍历 级联菜单 动态生成表格)

myeclipse10.7<body> <div id="time"></div> <input type="checkbox" id="box" onclick="selAll()"> <br/> <input type="checkbox" name="1">1 <input type="checkbox" name="1">2 <input type="checkbox" name="1">3

civilizationV的博客 414

RK3588与FocalTech触摸屏代码适配全解析:从原理到实战

摘要:本文详细介绍了瑞芯微RK3588处理器与FocalTech触摸屏的适配过程,包括硬件特性、驱动加载、设备树配置和常见问题解决方案。RK3588作为8nm工艺的高性能处理器,具备强大的计算能力和丰富的接口资源;FocalTech触摸屏则采用电容式技术,支持I2C/SPI接口。适配关键步骤包括驱动程序加载、硬件连接检查、设备树配置和内核版本兼容性处理,并提供了代码示例和问题排查方法。随着嵌入式设备智能化发展,该适配技术将持续优化,为智能交互提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 272

JS倒序删除节点

删节点用倒序删除. 比如说现有一个树有3个节点. 节点下标分别为0, 1, 2. 你用正序的话, 就是从0循环到2, 执行三次 第一次执行, 会删除下标为0的节点. 这个时候树剩下二个节点, 这二个节点自动向前补进一位. 从1, 2变成0, 1. 第二次执行的时候, 会删除下标为1的节点. 这个时候树剩下下标为0的节点. 第三次执行的时候, ...

xinyi128108的博客 573

24、语料库与科技术语库建设

本文探讨了语料库在科技术语库建设中的关键作用,重点分析了词性标注、索引、搭配、词形还原、频率计数、词汇排序和类型-标记分析等核心技术的应用与挑战。文章以印度语言为例,指出其语料库处理工具匮乏的现状,强调需开发适配本地语言特征的技术,并提出一个整合多种处理步骤的综合流程,旨在推动印度语言科技术语数据库的系统化建设,促进科技语言的发展与应用。

cola5的博客 91

振动分析-46-设备振动监测和故障诊断能力提升需要理解和掌握的知识体系

提升振动分析能力对于确保机械设备的高效运行和预防故障至关重要。

qq_20466211的博客 664
上一篇: jQuery 获取屏幕高度、宽度
下一篇: 什么是web标准、可用性、可访问性
drl1210
博客等级 码龄10年 26粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值