Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript或appscript唯一地添加/删除动态文本框_Javascript_Html_Dynamic_Google Apps Script_Textbox - Fatal编程技术网

使用javascript或appscript唯一地添加/删除动态文本框

使用javascript或appscript唯一地添加/删除动态文本框,javascript,html,dynamic,google-apps-script,textbox,Javascript,Html,Dynamic,Google Apps Script,Textbox,我得到了这段代码,从中我修改了一点,为输入添加了唯一的数字 var i=1; 函数addkid(){ i++; var div=document.createElement('div'); var id=i; div.innerHTML='Child_'+id+':'+'''+''; document.getElementById('kids').appendChild(div); } 功能组(分区){ document.getElementById('kids').removeChild(d

我得到了这段代码,从中我修改了一点,为输入添加了唯一的数字

var i=1;
函数addkid(){
i++;
var div=document.createElement('div');
var id=i;
div.innerHTML='Child_'+id+':'+'''+'';
document.getElementById('kids').appendChild(div);
}
功能组(分区){
document.getElementById('kids').removeChild(div.parentNode);
我--;
}

姓名:

儿童1: 电话:
  • 您可以使用
    document.queryselectoral('#kids input[type=text]')[document.queryselectoral('#kids input[type=text]').length-1].name.split('#kids input[type=text]')来监视添加到
    div#kids
    中的最后一个孩子的名字,而不是监视
    i
  • 这将获得最后一个孩子的名字,并根据它设置下一个孩子的id

    演示:

  • 我已经更新了jsfiddle链接,一个名为
    capturesponse
    的函数将动态迭代添加的child并返回一个JSONObject。您可以在函数的submit上调用此函数

  • 3.您可以点击对Appscript的GET或POST请求,并在Appscript中获取数据以进行处理

    如果跳过id号不是问题,您可以从
    remkid()
    中删除
    i--
    。这将防止任何重复的ID。否则,您可以执行以下操作:

    var i=1;
    var removedkids=[];
    函数addkid(){
    如果(removedkids.length>0){
    newid=removedkids.shift();
    }否则{
    newid=i;
    i++;
    }
    }
    函数removeKid(id){
    removedkids=removedkids.push(id.sort();
    
    }
    问题1:此代码应注意为您的文本框提供唯一的id,而不会在id号中留下任何空白。我通过使用一个函数getID来实现这一点,该函数跟踪数组中可用的id。每当我们删除一个元素时,具有该索引的数组值就被设置为-1。我们使用indexOf搜索“-1”,并跟踪未使用的ID

    var指数=[];
    //数组以0开头,但id以0开头,因此推送一个伪值
    指数推送(0);
    //在索引1处推送1,因为已经创建了一个子元素
    索引推送(1)
    函数addkid(){
    var div=document.createElement('div');
    var id=getID();
    //设置此属性id,以便我们可以使用id访问此元素
    div.setAttribute(“id”、“div_u3;”+id);
    div.innerHTML='Child_'+id+':'+'''+'';
    //在remkid中传递此参数的内部,我们传递id号
    document.getElementById('kids').appendChild(div);
    }
    函数remkid(id){
    //使用id片段使用addkid中设置的唯一id获取div元素
    试一试{
    var-element=document.getElementById(“Div_216;”+id)
    element.parentNode.removeChild(元素);
    索引[id]=-1;
    //id number=数组的索引,所以我们将其设置为-1以指示其为空
    }
    捕捉(错误){
    警报(“id:Div_389;”+id)
    警报(错误)
    }
    }  
    函数getID(){
    var emptyIndex=指数.indexOf(-1);
    如果(emptyIndex!=-1){
    索引[空索引]=空索引
    返回空索引
    }否则{
    emptyIndex=index.length
    索引推送(emptyIndex)
    返回空索引
    }
    }
    
    
    姓名:
    
    儿童1: 电话:

    如果我添加了30个文本输入框,然后我继续删除一些输入框,比如2、5、9、16,那么我可以在下面添加这些框,并从31开始再次保持顺序吗?此代码将永远删除2、5、9、16,当你添加一个新的孩子时,计数器将从31开始。基本上,你的身份证号码不会是连续的,并且会有像1,3,4,6,7,8,10这样的中断-30@Mohd阿西姆·苏哈伊尔,但我能不能先填空,然后从31岁开始?@Jagannathan Alagurajan,但我能不能也填空,然后从31岁开始?这很有效!谢谢@jagannathan alagurajan。一个问题:现在jsondata只包含动态文本框值。还可以将其他静态控件的值包括在内吗?例如“姓名”、“电话”或日期字段?我不确定我是否理解您的问题,只要名称和电话值在表单标记内(此处的输入元素将发布到URL),就可以将其传递到应用程序脚本。我应该在“”中添加什么?指向已创建的Web应用程序的链接,正如您演示如何创建的一样?如果您使用的是我的示例,则action=“将您的应用程序脚本url放在此处”,method=“post”。要获取应用程序脚本url,请复制并通过script.google.com中的dopost函数并发布它。特别有趣的是您的getID函数。你能(有空时)详细说明一下,让我明白吗?