当前位置:Gxlcms > JavaScript > 有关JS文档碎片添加元素的详细讲解(图文教程)

有关JS文档碎片添加元素的详细讲解(图文教程)

时间:2021-07-01 10:21:17 帮助过:15人阅读

JS 操作DOM节点可能以节点为单位进行,比如添加节点,可以createElement, createTextNode,然后用 appendChild把文本节点和容器节点绑定在一起,然后再用 appendChild或insertBefor添加到DOM树中.但如果要往DOM树中动态添加大量的节点.就会很麻烦.

例如:

  1. var arrText = ["one","two","three","four","five","six","seven","eight","nine","ten"];
  2. for(var i = 0;i<arrText.length;i++){
  3. var oP = document.createElement("p");
  4. var oText = document.createTextNode(arrText[i]);
  5. oP.appendChild(oText);
  6. document.body.appendChild(oP);
  7. }

这段代码调用了十次document.body.appendChild(),每次都要产生一次页面刷新.很麻烦.所以可以用"文档碎片 ":

  1. var arrText = ["one","two","three","four","five","six","seven","eight","nine","ten"];
  2. var oFragment = document.createDocumentFragment();
  3. for(var i = 0;i<arrText.length;i++){
  4. var oP = document.createElement("p");
  5. var oText = document.createTextNode(arrText[i]);
  6. oP.appendChild(oText);
  7. oFragment.appendChild(oP);
  8. }
  9. document.body.appendChild(oFragment);
    1. function appendError (id, str) {
    2. var spanNew = document.createElement("span" ); // 创建span
    3. spanNew.id = id + "span" ; // 生成spanid
    4. spanNew.style.color = "red" ;
    5. spanNew.appendChild(document.createTextNode(str));// 给span添加内容
    6. var inputId = document.getElementById(id);
    7. inputId.parentNode.insertBefore(spanNew, inputId.nextSibling);// 给需要添加元素后面添加span
    8. //如果需要在前面添加改成就可以了
    9. inputId.parentNode.insertBefore(spanNew, inputId);// 给需要添加元素后面添加span
    10. }
  1. <script type="text/javascript"><!--
  2. function $(nodeId)
  3. {
  4. return document.getElementById(nodeId);
  5. }
  6. function $Name(tagName)
  7. {
  8. return document.getElementsByTagName(tagName);
  9. }
  10. function replaceMsg()
  11. {
  12. var newNode = document.createElement("P");//创建一个P标签
  13. newNode.innerHTML = "<font color='red'>替换后的文字</font>";
  14. var oldNode = $Name("P")[0];//获取body里面第一个p元素
  15. oldNode.parentNode.replaceChild(newNode,oldNode);//直接替换了标签
  16. }
  17. function removeMsg()
  18. {
  19. var node = $("p2");//p标签
  20. var nodeBtn = $("remove");//按钮
  21. //node.parentNode.removeChild(node); //下面效果相同
  22. document.body.removeChild(node);//在body中删除id为P2的元素
  23. //nodeBtn.parentNode.removeChild(nodeBtn);//删除该按钮
  24. document.body.removeChild(nodeBtn);
  25. //document.body.removeNode();执行这条语句将清空body里面的任何元素
  26. }
  27. function addbefore()
  28. {
  29. var newNode = document.createElement("p");//创建P标签
  30. //var newText = document.createTextNode("前面添加的元素");
  31. //newNode.appendChild(newText);//与下面效果一样
  32. newNode.innerHTML = "<font color='red'>前面添加的元素</font>";//书写P标签里面的内容
  33. var oldNode = $("p3");//目标标签
  34. //document.body.insertBefore(newNode,oldNode);
  35. oldNode.parentNode.insertBefore(newNode,oldNode);//在目标标签前面 添加元素
  36. }
  37. function addlast()
  38. {
  39. var newNode = document.createElement("p");//创建P标签
  40. //var newText = document.createTextNode("后面添加的元素");
  41. //newNode.appendChild(newText);//与下面效果一样
  42. newNode.innerHTML = "<font color='red'>后面添加的元素</font>";
  43. var oldNode = $("p3");
  44. oldNode.appendChild(newNode);
  45. //document.body.appendChild(newNode);//如果使用该方法,则在body的最后添加元素
  46. }
  47. window.onload = function addArrayMsg()
  48. {
  49. var arrayMsg = ['one','two','three','four','five'];//创建数组
  50. var fragment = document.createDocumentFragment();//创建文档片段
  51. var newNode ;
  52. for (var i=0 ;i<arrayMsg.length ;i++ )
  53. {
  54. newNode = document.createElement("P");//创建P标签
  55. var nodeText = document.createTextNode(arrayMsg[i]);//创建文本标签,value为数组里面的值
  56. newNode.appendChild(nodeText);//
  57. fragment.appendChild(newNode);//把P标签追加到fragment里面
  58. }
  59. document.body.appendChild(fragment);//把fragment追加到body里面
  60. }
  61. function addRow()
  62. {
  63. var tab = $("myTable");
  64. //tab.createCaption().innerHTML="<font color='red'>我的表格</font>";
  65. var oldTr = $("handleTr");
  66. var newTr = tab.insertRow();//创建一行
  67. var newTd1 = newTr.insertCell();//创建一个单元格
  68. var newTd2 = newTr.insertCell();//创建一个单元格
  69. newTd1.innerHTML = "<input type='checkbox' />";
  70. newTd2.innerHTML = "<input type='text' />";
  71. }
  72. function removeRow()
  73. {
  74. var tab = $("myTable");
  75. // if(tab.rows.length>0){
  76. // tab.deleteRow();
  77. // if(tab.rows.length==1)
  78. // tab.deleteCaption();
  79. // }
  80. var cbbox ;
  81. for(var i=0;i<tab.rows.length;i++){
  82. cbbox = tab.rows[i].childNodes[0].childNodes[0];//获取input元素
  83. if(cbbox.checked){
  84. tab.deleteRow(i--);
  85. }
  86. }
  87. }
  88. //全选
  89. function selAll(value){
  90. var items = document.all.tags("input");//获取页面上所有的input元素
  91. for(var i = 0;i<items.length;i++){
  92. if(items[i].type=="checkbox"){//判断类型是否为checkbox
  93. items[i].checked = value.checked;
  94. }
  95. }
  96. }
  97. function getInputValue()
  98. {
  99. var inputArray = new Array();//创建一个数组
  100. var tab = $("myTable");
  101. var tbInput;
  102. for(var i=0;i<tab.rows.length;i++){
  103. tbInput = tab.rows[i].childNodes[1].childNodes[0].value;
  104. if(tbInput!=""&&tbInput!=null)
  105. inputArray.push(tbInput);
  106. }
  107. inputArray = inputArray.join("*^&");//默认以","号连接
  108. $("showValue").value = inputArray;
  109. }
  110. var x ='10+20';
  111. ("alert(x);")
  112. // --></script>
  113. </head>
  114. <body>
  115. <p id="p1">Hello World!
  116. <input type="button" value="替换内容" onclick="replaceMsg();" />
  117. <p id="p2">我可以被删除!
  118. <input type="button" id="remove" value="删除它" onclick="removeMsg();" />
  119. <p id="p3">在我上下添加一个元素吧!
  120. <input type="button" id="addbefore" value="前面添加" onclick="addbefore();" />
  121. <input type="button" id="addlast" value="后面添加" onclick="addlast();" />
  122. <div style="border:1px solid blue;height:300px">
  123. <table id="myTable" cellpadding="0" cellspacing="0" border="1px solid blue" style="padding:4px;" style="padding:4px;">
  124. </table>
  125. <input type="checkbox" onclick="selAll(this);" />
  126. <input type="button" value="添加一行" id="addRow" onclick="addRow();" />
  127. <input type="button" value="删除一行" id="removeRow" onclick="removeRow();" />
  128. <textarea rows="5" cols="25" id="showValue" />

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

js保留两位小数的方法

加载移除js与css文件步骤详解

p5.js实现烟花绽放效果

以上就是有关JS文档碎片添加元素的详细讲解(图文教程)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行