js函数示例(拷贝别人)

  1. /**    
  2. * 全选的所有指定名称的checkbox   
  3. *@state 全选的checkbox的状态   
  4. *@name   表格中的所有checkbox的名称   
  5. *@author fangtf   
  6. *@type void   
  7. */   
  8. function selectAll(state,name) {   
  9.     var ids = document.getElementsByName(name);   
  10.     for (var i = 0; i < ids.length; i++)    
  11.     {          
  12.             ids[i].checked = state;   
  13.     }   
  14. }   
  15.   
  16. /**    
  17. * 全选的所有指定id名称的同名checkbox   
  18. *@state 全选的checkbox的状态   
  19. *@name   表格中的所有checkbox的名称   
  20. *@name   表格中的所有checkbox的id   
  21. *@author fangtf   
  22. *@type void   
  23. */   
  24. function selectAllCheckboxByID(state,name,id) {   
  25.     var ids = document.getElementsByName(name);   
  26.     for (var i = 0; i < ids.length; i++)    
  27.     {          
  28.             if(ids[i].id == id)   
  29.             {   
  30.                 ids[i].checked = state;   
  31.             }   
  32.                
  33.     }   
  34. }   
  35.   
  36. /**    
  37. * 全选页面上所有的checkbox   
  38. *@state 全选的checkbox的状态   
  39. *@author fangtf   
  40. *@type void   
  41. */   
  42. function selectAlls(state)    
  43. {   
  44.     var inputs = document.getElementsByTagName("input");   
  45.     for(var i =0;i<inputs.length;i++)   
  46.     {   
  47.         if(inputs[i].type == "checkbox")   
  48.         {   
  49.             inputs[i].checked =state;    
  50.         }   
  51.     }   
  52.   
  53. }   
  54.   
  55. /**   
  56. *得到鼠标所单击的行   
  57. *@type Object   
  58. */   
  59. function GetRow(oElem) {   
  60.     while (oElem) {   
  61.         if (oElem.tagName.toLowerCase() == "tr" && oElem.parentElement.tagName.toLowerCase() == "tbody") {   
  62.             return oElem;   
  63.         }   
  64.         if (oElem.tagName.toLowerCase() == "table" || oElem.tagName.toLowerCase() == "th") {   
  65.             return false;   
  66.         }   
  67.         oElemoElem = oElem.parentElement;   
  68.     }   
  69. }   
  70.   
  71. /**    
  72. * 全选当前行的checkbox   
  73. *@state 全选的checkbox的状态   
  74. *@author fangtf   
  75. *@type void   
  76. */   
  77. function selectRowCheckbox(state)   
  78. {   
  79.   var row = GetRow(window.event.srcElement);   
  80.   var cells = row.childNodes;    
  81.   for(var i=0;i<cells.length;i++)   
  82.   {   
  83.       var cell = cells[i].childNodes[0];   
  84.      if(cell.tagName == "INPUT")   
  85.      {   
  86.         cell.checked = state;   
  87.      }   
  88.   }   
  89. }   
  90.   
  91. /**    
  92. *选中指定值的Radio   
  93. *如:有两个radio,   
  94. *第一个的name="ids",value="1"  
  95. *第二个的name="ids",value="2"  
  96. *调用方法selectRadio("ids","1");   
  97. *那么数值为1的Radio将被选中   
  98. *@name radio的名称   
  99. *@value radio的值   
  100. *@author fangtf   
  101. *@type void   
  102. */   
  103. function selectRadio(name,value) {   
  104.     var radioObject = document.getElementsByName(name);   
  105.     if(value === "")   
  106.     {   
  107.         radioObject[0].checked = true;   
  108.         return;   
  109.     }   
  110.     for (var i = 0; i < radioObject.length; i++)    
  111.     {   
  112.         if(radioObject[i].value == value)   
  113.         {   
  114.             radioObject[i].checked = true;   
  115.             break;   
  116.         }   
  117.            
  118.     }   
  119. }   
  120.   
  121. /**    
  122. *选中指定值的checkbox   
  123. *如:有两个checkbox,   
  124. *第一个的name="ids",value="1"  
  125. *第二个的name="ids",value="2"  
  126. *第三个的name="ids",value="3"  
  127. *调用这个方法selectCheckbox("ids","1,2")那么数值为1,2的checkbox将被选中   
  128. *                   
  129. *@name 要选中的checkbox数组的名称   
  130. *@value 判断时候选中的值   
  131. *@author fangtf   
  132. *@type void   
  133. */   
  134. function selectCheckbox(name,value) {   
  135.     var checkObject = document.getElementsByName(name);   
  136.     var valuevalues = value.split(",");   
  137.     for(var j = 0; j < values.length; j++)   
  138.     {   
  139.         for (var i = 0; i < checkObject.length; i++)    
  140.         {   
  141.             if(checkObject[i].value == values[j])   
  142.             {   
  143.                 checkObject[i].checked = true;   
  144.                 break;   
  145.             }   
  146.         }   
  147.     }   
  148.        
  149. }   
  150.   
  151. /**    
  152. *选中指定值的select   
  153. *如:有一个名称为user的select   
  154. *<option value="0"></option>  
  155. *<option value="1"></option>  
  156. *调用这个方法selectOption("user","0")那么选项为0的选项就被选中   
  157. *                  
  158. *@name  String  select的名称   
  159. *@value String  判断时候选中的值   
  160. *@author fangtf   
  161. *@type void   
  162. */   
  163. function selectOption(name,value)   
  164. {   
  165.      document.getElementsByName(name)[0].value=value;   
  166.   
  167. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用递归函数实现深拷贝,具体实现方法可以参考以下代码: function deepClone(obj) { if (typeof obj !== 'object' || obj === null) { return obj; } let result = Array.isArray(obj) ? [] : {}; for (let key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { result[key] = deepClone(obj[key]); } } return result; } 这个函数可以递归地遍历对象或数组的每一个属性,然后进行深拷贝。 ### 回答2: 在JavaScript中,可以通过递归函数来实现深拷贝。深拷贝意味着将一个对象的所有属性和子属性都复制到一个新的对象中,使得新的对象与原始对象完全独立,修改新对象不会影响原始对象。下面是一个使用递归函数实现深拷贝示例: ```javascript function deepCopy(obj) { if (typeof obj !== 'object' || obj === null) { return obj; // 如果是基本类型或者null,直接返回 } let cloneObj = Array.isArray(obj) ? [] : {}; // 判断是数组还是对象 for (let key in obj) { if (obj.hasOwnProperty(key)) { // 确保只拷贝对象自身的属性 cloneObj[key] = deepCopy(obj[key]); // 递归调用深拷贝函数 } } return cloneObj; // 返回新的拷贝对象 } // 示例: let obj1 = { name: '张三', age: 20, hobbies: ['篮球', '足球', '游泳'], address: { city: '北京', street: '朝阳路' } }; let obj2 = deepCopy(obj1); obj2.name = '李四'; obj2.hobbies.push('乒乓球'); obj2.address.city = '上海'; console.log(obj1); // { name: '张三', age: 20, hobbies: ['篮球', '足球', '游泳'], address: { city: '北京', street: '朝阳路' } } console.log(obj2); // { name: '李四', age: 20, hobbies: ['篮球', '足球', '游泳', '乒乓球'], address: { city: '上海', street: '朝阳路' } } ``` 以上代码定义了一个名为`deepCopy`的函数,它接收一个参数`obj`,首先判断传入的对象类型,如果是基本类型或者null,则直接返回;如果是对象或者数组,创建一个新的空对象或者空数组,然后使用`for...in`循环遍历原始对象的属性,递归调用`deepCopy`函数来深拷贝每个属性值,最后返回新的拷贝对象。这样,我们就可以通过递归函数实现深拷贝了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值