在JavaScript中的DOM节点内搜索和替换

时间:2013-03-27 17:28:25

标签: javascript html dom

我正在创建一个表单,并希望能够根据需要使用javascript复制某些DIV。但是,我需要替换某段文本的多个实例。这样的事情,评论被功能代码取代:

<body>

   <div id="duplicate">
      <p>Section_1 of form</p>
      <a href="javascript:add_section()">Add A Section</a>
   </div>

   <script type="text/javascript">
   <!--
      var num_sections = 1;
      function add_section()
      {

         var orig_div=document.getElementById("duplicate")
         var copy_div=orig_div.cloneNode(true);

         //Change every "Section_1" in copy_div to "Section_"+num_sections

         footer = document.getElementById("footer");
         document.body.insertBefore(copy_div,footer);

      }

   //-->
   </script>

   <div id="footer"></div>

</body>

使用JavaScript,当这些实例位于该部分的每个输入标记中时,更换Section_1的每个实例的优雅方法是什么?

我在CMS的范围内工作,所以我无法使用更强大的处理语言来实现它。

1 个答案:

答案 0 :(得分:1)

您可以在DOM节点上调用getElementsByTagName来获取由标记标识的某些元素组。

var num_sections = 1;
window.add_section = function() {
    var orig_div=document.getElementById("duplicate")
    var copy_div=orig_div.cloneNode(true);

    //Change every "Section_1" in copy_div to "Section_"+num_sections
    num_sections++;
    var p = copy_div.getElementsByTagName('p')[0];
    p.innerHTML = p.innerHTML.replace('Section_1', 'Section_' + num_sections);

    var footer = document.getElementById("footer");
    document.body.insertBefore(copy_div,footer);
};

这是jsFiddle