用JS把HTML添加到指定位置有两种写法,一种是用字符串,一种是用javascript中的方法

第一种:

用字符串写

  1. <h2>利用JS无限添加一个相同部分</h2>
  2. <h5>第一种写法</h5>
  3. <%--有多少个相同的这里面的值就是几--%>
  4. <asp:HiddenField ID="hfCount" runat="server" Value="-1" />
  5. <%--每个就是后面的数字不一样 例如:One1,One2,One3.... --%>
  6. <asp:HiddenField ID="hfIndex" runat="server" />
  7. <div id="divOne" runat="server">
    <%-- 这里添加HTML --%>
  8. </div>
  9. <span class="addto"><a href="javascript:void(0);" onclick="AddInfo();">添加</a></span>
  10. <br />
  11. <hr />
  1. <script type="text/javascript">
  2. $(function () {
  3. var count = $("#hfCount").val();
  4. if (count <= ) {
  5. AddInfo();
  6. }
  7. })
  8.  
  9. function AddInfo() {

  10. //根据数量来增加 hfCount的值
  11. var Count = $("#hfCount").val(); //先取值
  12. var PageIndex = ;
  13. //如果没有就自己加,有就根据个数来定
  14. if (Count > -) {
  15. var Indexs = $("#hfIndex").val().split(','); //有多少个dl
  16. Count = ++Indexs[Count - ]; //第几个 取最大值 +1就可以
  17. PageIndex = Indexs.length - ; //个数
  18.  
  19. } else {
  20. Count++;
  21. PageIndex = Count;
  22. }

  23. //第二种赋值,用这种下面的也要变
  1. 字符串生成dl里面的Count改成PageIndex
  1.              var OneCount = $("#OneCount").val(); //取个数

               var pageIndex = 0;
               if (OneCount > 0) {
                   var OneIndexs = $("#OneIndex").val(); //0,1,2,3,4
                   var Indexs = OneIndexs.split(','); //0 1 2 3 4 ""
                   pageIndex = ++Indexs[Indexs.length - 2]; //取最大值每次+1就是下一个数字
               }

  1.  
  2.  
  3. var strHtml = "\r\n";
  4. strHtml += "<dl class='form_main' id=\"Form" + Count + "\">\r\n";
  5. //这里绑定表的主键 好做修改
  6. strHtml += "<input type=\"hidden\" name=\"hfID" + Count + "\" value=\"0\"/>\r\n";
  7.  
  8. strHtml += "<dd>\r\n";
  9. strHtml += "<u>测试数据一:</u>\r\n";
  10. strHtml += "<input type='text' id='One" + Count + "' name='One" + Count + "' />\r\n";
  11. strHtml += "</dd>\r\n";
  12.  
  13. strHtml += "<dd>\r\n";
  14. strHtml += "<u>测试数据二:</u>\r\n";
  15. strHtml += "<input type='text' id=\"Two" + Count + "\" name='" + Count + "' />\r\n";
  16. strHtml += "</dd>\r\n";
  17.  
  18. if (Count > ) {
  19. strHtml += "<dt class=\"delete\"><a href=\"javascript:void(0);\" onclick=\"delControl('Form" + Count + "')\" >删除</a></dt>\r\n";
  20. }
  21. strHtml += "<dt></dt>\r\n";
  22. strHtml += "</dl>";
    //字符串拼接好

  23. $("#divOne").append(strHtml);
  24. $("#hfCount").val(++PageIndex);
  25. var dd = $("#hfIndex").val();
  26. dd += Count + ",";
  27. $("#hfIndex").val(dd);
  28.  

$("#OneCount").val(parseInt(OneCount) + 1);   //数量加一
               var OneIndex = $("#OneIndex").val();            //先取值
               $("#OneIndex").val(OneIndex + pageIndex + ",");    //在原来的值上添加新的值

  1. }
  2.  
  3. //删除

  4. function delControl(id) {
  5. $("dl").remove("#" + id);
  6. //我们让下面的ID删除,数量减一就可以了
  7. var count = $("#hfCount").val(); //取值
  8. $("#hfCount").val(--count); //计算后赋值
  9. var index = $("#hfIndex").val(); //0,1,2,3
  10. index = index.replace(id.replace("Form", "") + ",", ""); //删除第几个就把 x, 删除
  11. $("#hfIndex").val(index);
  12. }

function delControl(id) {
                $("dl").remove("#" + id);
               //重新赋值
               var OneCount = $("#OneCount").val();
         $("#OneCount").val(--OneCount); //个数重新赋值
         var dd = id.replace("Form", ""); //得到数字
         var Index = $("#OneIndex").val(); //取值
         Index = Index.replace(dd + ",", ""); //替换(也就是删除数字)
         $("#OneIndex").val(Index);
        }

  1.  

4代表是有多少个,下面的0,1,4,5,代表dl里面的数字   这个是对应的,后台取值需要

我们来看看怎么存数据

  1. public List<Two> listTwo; //一般这里存到数据库里面,然后从数据库里面取数据,做演示就简单的存一下
  2. public void AddOne()
  3. {
  4. listTwo = new List<Two>();
  5. string[] indexs = hfIndex.Value.TrimEnd(',').Split(','); //1,5,6,7 类似的格式
  6. foreach (string item in indexs)
  7. {
  8. Two two = new Two();
  9. two.A = Request.Form["One" + item]; //表单提交,post取数据
  10. two.B = Request.Form["Two" + item];
  11. listTwo.Add(two);
  12. }
  13. }
  14.  
  15. public class Two
  16. {
  17. public string B { get; set; }
  18. public string A { get; set; }
  19.  
  20. }
  21. //字符串的形式来赋值
  22. public void AddHtml()
  23. {
  24. string strHtml = "\r\n";
  25. divOne.InnerHtml = "";
  26. if (listTwo != null)
  27. {
  28. hfCount.Value = listTwo.Count + "";
  29. for (int i = ; i < listTwo.Count; i++)
  30. {
  31. strHtml += "<dl class='form_main' id=\"Form" + i + "\">\r\n";
  32. //这里绑定表的主键 好做修改
  33. strHtml += "<input type=\"hidden\" name=\"hfID" + i + "\" value=\"0\"/>\r\n";
  34.  
  35. strHtml += "<dd>\r\n";
  36. strHtml += "<u>测试数据一:</u>\r\n";
  37. strHtml += "<input type='text' id='One" + i + "' name='One" + i + "' value=\"" + listTwo[i].A + "\" />\r\n";
  38. strHtml += "</dd>\r\n";
  39.  
  40. strHtml += "<dd>\r\n";
  41. strHtml += "<u>测试数据二:</u>\r\n";
  42. strHtml += "<input type='text' id=\"Two" + i + "\" name='Two" + i + "' value=\"" + listTwo[i].B + "\" />\r\n";
  43. strHtml += "</dd>\r\n";
  44.  
  45. if (i > )
  46. {
  47. strHtml += "<dt class=\"delete\"><a href=\"javascript:void(0);\" onclick=\"delControl('Form" + i + "')\" >删除</a></dt>\r\n";
  48. }
  49. strHtml += "<dt></dt>\r\n";
  50. strHtml += "</dl> ";
  51.  
  52. hfIndex.Value = hfIndex.Value + i + ",";
  53. }
  54. divOne.InnerHtml = strHtml;
  55.  
  56. }
  57. }

第二种,利用Javascript创建元素来写

  1. <h5>第二种写法</h5>
  2. <div id="divHtml" runat="server">
  3. </div>
  4. <asp:HiddenField ID="hfTest" Value="" runat="server" />
  5. <span class="addto"><a href="javascript:void(0);" onclick="AddHtml();">添加</a></span>
  1. function AddHtml() {
  2. var count = $("#hfTest").val();
  3. var divHtml = document.getElementById("divHtml");
  4. var newdl = document.createElement("dl"); //创建一个元素
  5. newdl.setAttribute("class", "form_main"); //设置属性
  6. newdl.setAttribute("id", "FormOne" + count);
  7.  
  8. //创建第一个dd
  9. var newdd0 = document.createElement("dd"); //创建一个子元素
  10.  
  11. //u
  12. var newu0 = document.createElement("u");
  13. newu0.innerHTML = "测试数据One"; //设置文本
  14. newdd0.appendChild(newu0); //dd里面添加 u
  15. //input
  16. var newinput0 = document.createElement("input");
  17. newinput0.setAttribute("id", "DataOne" + count);
  18. newinput0.setAttribute("Name", "DataOne" + count);
  19. newinput0.setAttribute("type", "text");
  20.  
  21. newdd0.appendChild(newinput0); //dd里面添加 input
  22. newdl.appendChild(newdd0); //dl里面添加dd
  23.  
  24. //第二个
  25. var newdd1 = document.createElement("dd");
  26.  
  27. ////u
  28. var newu1 = document.createElement("u");
  29. newu1.innerText = "测试数据Two";
  30. newdd1.appendChild(newu1);
  31. //input
  32. var newinput1 = document.createElement("input");
  33. newinput1.setAttribute("type", "text");
  34. newinput1.setAttribute("id", "DataTwo" + count);
  35. newinput1.setAttribute("Name", "DataTwo" + count);
  36.  
  37. newdd1.appendChild(newinput1);
  38. newdl.appendChild(newdd1);
  39. if (count > ) {
  40. //创建删除
  41. var newdeldt = document.createElement("dt");
  42. newdeldt.setAttribute("class", "delete");
  43. var newa = document.createElement("a");
  44. newa.setAttribute("href", "javascript:void(0)");
  45. newa.setAttribute("onclick", "deleteHtml('FormOne" + count + "')");
  46. newa.innerHTML = "删除";
  47. newdeldt.appendChild(newa);
  48. newdl.appendChild(newdeldt);
  49. }
  50. var dt = document.createElement("dt");
  51. newdl.appendChild(dt);
  52. divHtml.appendChild(newdl); //把dl添加到div里面
  53. count++;
  54. $("#hfTest").val(count);
  55. }
  56.  
  57. function deleteHtml(id) {
  58. $("#" + id).remove();
  59. var count = $("#hfTest").val();
  60. count--;
  61. $("#hfTest").val(count--);
    //个数 并保证 dl的id以xx0,xx1,xx2,xx3的规律
  62. var i = ;
  63. $("#divHtml dl").each(function () {
    //设置每个dl的属性,方便后台取值
  64. $(this).attr("id","FormOne" + i);
  65. $(this).children("dd:eq(0)").find("input").attr({ "id": "DataOne" + i, "name": "DataOne"+i });
  66. $(this).children("dd:eq(1)").find("input").attr({ "id": "DataTwo" + i, "name": "DataTwo" + i });
  67. $(this).children("dt[class='delete']").attr("onclick", "deleteHtml('FormOne" + i + "')");
  68. i++;
  69. })
  70. }

页面

生成的HTML,id很有规律

后台存和取值

  1. using System.Web.UI.HtmlControls; //先引用
  2. public List<One> listOne;
  3. public void CreateHtml()
  4. {
  5. divHH.InnerHtml = "";
  6. if (listOne != null)
  7. {
  8. int i = ;
  9. foreach (One item in listOne)
  10. {
    //创建一个Html元素
  11. HtmlGenericControl newdl = new HtmlGenericControl("dl");
  12. newdl.Attributes.Add("class", "form_main");
  13. newdl.Attributes.Add("id", "FormOne" + i);
  14. //创建第一个dd
  15. HtmlGenericControl newdd1 = new HtmlGenericControl("dd");
  16.  
  17. //创建u
  18. HtmlGenericControl newu1 = new HtmlGenericControl("u");
  19. newu1.InnerHtml = "测试数据One:";
  20. newdd1.Controls.Add(newu1); //把u添加到dd中
  21.  
  22. //创建Input
  23. HtmlGenericControl newinput1 = new HtmlGenericControl("input");
  24. newinput1.Attributes.Add("id", "DataOne" + i);
  25. newinput1.Attributes.Add("name", "DataOne" + i);
  26. newinput1.Attributes.Add("type", "text");
  27. newinput1.Attributes.Add("value", item.Name);
  28.  
  29. newdd1.Controls.Add(newinput1);
  30. newdl.Controls.Add(newdd1);
  31.  
  32. //创建第二个dd
  33. HtmlGenericControl newdd2 = new HtmlGenericControl("dd");
  34.  
  35. //u
  36. HtmlGenericControl newu2 = new HtmlGenericControl("u");
  37. newu2.InnerHtml = "测试数据Two:";
  38. newdd2.Controls.Add(newu2);
  39.  
  40. //input
  41. HtmlGenericControl newinput2 = new HtmlGenericControl("input");
  42. newinput2.Attributes.Add("id", "DataTwo" + i);
  43. newinput2.Attributes.Add("name", "DataTwo" + i);
  44. newinput2.Attributes.Add("type", "text");
  45. newinput2.Attributes.Add("value", item.Des);
  46.  
  47. newdd2.Controls.Add(newinput2);
  48. newdl.Controls.Add(newdd2);
  49.  
  50. if (i > )
  51. {
  52. //创建dt删除
  53. HtmlGenericControl newdt = new HtmlGenericControl("dt");
  54. newdt.Attributes.Add("class", "delete");
  55.  
  56. HtmlGenericControl newa = new HtmlGenericControl("a");
  57. newa.Attributes.Add("href", "javascript:void(0);");
  58. newa.Attributes.Add("onclick", "deleteHtml('FormOne" + i + "')");
  59. newa.InnerHtml = "删除";
  60. newdt.Controls.Add(newa);
  61. newdl.Controls.Add(newdt);
  62. }
  63. HtmlGenericControl newdt0 = new HtmlGenericControl("dt");
  64. newdl.Controls.Add(newdt0);
  65. divHH.Controls.Add(newdl);
  66. i++;
  67. hfTest.Value = i.ToString();
  68. }
  69. }
  70. }
  71.  
  72. public void Add()
  73. {
  74. int Count = Convert.ToInt32(hfTest.Value);
  75. listOne = new List<One>();
  76. for (int i = ; i < Count; i++)
  77. {
  78. One one = new One();
  79. one.Name = Request.Form["DataOne" + i];
  80. one.Des = Request.Form["DataTwo" + i];
  81. listOne.Add(one);
  82. }
  83. }
  84. public class One
  85. {
  86. public string Des { get; set; }
  87. public string Name { get; set; }
  88.  
  89. }

以上就是两个在页面上添加HTML标签,这里只写了简单的标签,而做项目时一般都会有复杂一点的,复杂的没写进demo里面,可以自己去扩充。

JS无限添加HTML到指定位置的更多相关文章

  1. 如何在JS数组特定索引处指定位置插入元素?

    如何在JS数组特定索引处指定位置插入元素? 需求: 将一个元素插入到现有数组的特定索引处.听起来很容易和常见,但需要一点时间来研究它. // 原来的数组var array = ["one&q ...

  2. 转:JS在文本域鼠标指定位置插入文本-柯乐义

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. JS基础用法-向数组指定位置插入对象

    在做省市区三级联动的时候,需要在省市区默认位置放上请选择字样. 由于后台的API接口返回的没有请选择字样,那么就需要给返回的数组手动增加请选择 代码如下 // 原来的数组 var array = [& ...

  4. js 截取字符串,取指定位置的字符(完善中)

    1.获取字符串的最后一位或第一位 str.charAt(str.length - 1);    str.charAt(0);

  5. oracle添加列到指定位置

    http://blog.csdn.net/liufeng_king/article/details/7421826

  6. js将滚动条滚动到指定位置的方法

    代码如下(主要是通过设置Location的hash属性): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...

  7. vbscript input select 添加个option根据value值到指定位置--相当于排序

    '添加option到指定位置(按value排序) dim valindex valindex=-1 for i=0 to selcom.length-1 if selcom.Options(i).va ...

  8. js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素

    JS定义了一个json数据var test={name:"name",age:"12"};需要给test再添加一个字段,需要什么办法,可以让test的值为{na ...

  9. html js点击按钮滚动跳转定位到页面指定位置(DIV)的方法代码

    一:通过html锚点实现滚动定位到页面指定位置(DIV):    如果我们要点击实现跳转的地方是一个html锚点,也就是点击一个A标签超链接实现跳转,可以把A标签的href属性直接指向跳转指定位置的d ...

随机推荐

  1. 查看pip已经安装过的包

    查看pip已经安装过的包 pip list 查看xx包的安装路径 pip install xx 查看python2的pip安装的包 python2 -m pip list 查看python3 的pip ...

  2. WCF rest 的帮助页面和缓存机制

    打开vs2010 在工具选项中选择扩展管理器——联机库 安装WCF REST Service Template 40(CS)模板 安装后新建wcf服务应用程序,删除默认建立的文件. 新建RestWcf ...

  3. derby

    /** * @Title: T.java * @Package test * @Description: TODO please write your description <BR> * ...

  4. Windows窗体应用开发3--配置标准控件1

    1.掌握主要的Windows窗体控件的功能 2.掌握使用SplitContainer控件的方法 3.掌握使用TreeView控件的方法 注:新建一个WindowsForm 命名为Form2.cs 主要 ...

  5. jquery拖拽排序,针对后台列表table进行拖拽排序(超实用!)

    现在很多后台列表为了方便均使用拖拽排序的功能,对列表进行随意的排序. 话不多说 ,我在网上找了一些demo,经过对比,现在把方便实用的一个demo列出来,基于jqueryUI.js 先上html代码, ...

  6. 在DataColumn.Expression把DateTime转换成String的问题

    我在使用MySql5.1的数据库中,使用winForm的DataGridView要把数据库中全称DateTime格式,转换成Date格式,就是把日期时间转换成日期,不要时间.如‘2013-07-08 ...

  7. hdu 1561 树形DP n个选m个价值最大

    http://acm.hust.edu.cn/vjudge/problem/18068 #include <iostream> #include <string> #inclu ...

  8. #include stdio.h(5)

    #include <stdio.h> int main() { //1.数组的排序-冒泡排序 /* 1.规则:相邻的两个数据进行比较 2.如果有N个数据,需要选择N-1次参照物来比较, 因 ...

  9. Struts2 displaytag 导出文件为空

    以一个user的查询为例,在struts.xml配置里有这个action的配置: 然后可以在UserAction.java里找到list方法这个就是无非new 一个List<User> u ...

  10. 建立本地yum源

    使用环境 服务器处于内网,需要更新 网络资源紧张,节约带宽 建立yum目录 mkdir -p /opt/opmgmt/yum rsync服务器列表 centos mirrors epel mirror ...