Javascript 循环时IE中出现错误

Javascript 循环时IE中出现错误,javascript,arrays,Javascript,Arrays,让我们澄清我的问题 我想制作一个元素,该元素包含5个字段,因此如果旧元素为空,我不希望用户能够放入新元素,因此我在循环旧元素时发出警报,查看是否有字符串,如果没有,则不要放入新元素并发出警报,请填写所有字段 这是我的代码 function addEvent() { var ni = document.getElementById('discount'); // Takes the a div named discount var discountForm = docume

让我们澄清我的问题

我想制作一个元素,该元素包含5个字段,因此如果旧元素为空,我不希望用户能够放入新元素,因此我在循环旧元素时发出警报,查看是否有字符串,如果没有,则不要放入新元素并发出警报,请填写所有字段

这是我的代码

function addEvent() {
      var ni = document.getElementById('discount'); // Takes the a div named discount
      var discountForm = document.getElementById('discountForm'); // Takes the a form named discountForm
      var numi = document.getElementById('theValue'); // Takes the a hidden input field named theValue
      var num = (document.getElementById("theValue").value -1)+ 2; // Start counting to set the new divs form numbers
      numi.value = num;
      var divIdName = "my"+num+"Div"; // the new divs will be named
      var allDivTags = discountForm.getElementsByTagName('div'); // take all div tags
      var numOfDivs = (allDivTags.length -1); // take the number of the old div
      var oldDivIdName = document.getElementById(allDivTags[numOfDivs].id); // old div id
      var newdiv = document.createElement('div'); //the new div
      newdiv.setAttribute("id",divIdName);
      newdiv.innerHTML = "Company <select name=\"company[]\"><option value=\"\"></option><option value=\"ZI\">Avis</option><option value=\"ET\">Enterprise</option><option value=\"ZE\">Hertz</option><option value=\"ZD\">Budget</option><option value=\"ZR\">National</option><option value=\"AL\">Alamo</option></select> Discount Type <select name=\"type[]\"><option value=\"CD\">Discount Number</option><option value=\"PC\">Coupon Number</option></select> Code <input name=\"code[]\" type=\"text\"> Title <input name=\"title[]\" type=\"text\"> <a href=\"javascript:;\" onclick=\"removeElement(\'"+divIdName+"\')\">Remove</a>"; // creating the fileds in the new div
      ni.appendChild(newdiv);
      for(i=0; i<discountForm.elements.length;i++){ // loop through the divs
          if(numOfDivs != i-1){ // if tho old div exist and if the old div fields are empty
            if(oldDivIdName.children[i].value.length == 0){
              removeElement(divIdName); // then dont put the new one
              alert('Please enter all fields');
            }
          }
      }

    }
函数addEvent(){
var ni=document.getElementById('discount');//接受名为discount的div
var discountForm=document.getElementById('discountForm');//采用名为discountForm的形式
var numi=document.getElementById('theValue');//接受名为theValue的隐藏输入字段
var num=(document.getElementById(“theValue”).value-1)+2;//开始计数以设置新的divs表单编号
numi.value=num;
var divIdName=“my”+num+“Div”;//将命名新的Div
var allDivTags=discountForm.getElementsByTagName('div');//获取所有div标记
var numodivs=(allDivTags.length-1);//获取旧div的编号
var oldDivIdName=document.getElementById(allDivTags[numOfDivs].id);//旧div id
var newdiv=document.createElement('div');//新div
setAttribute(“id”,divIdName);
newdiv.innerHTML=“公司AvisEnterpriseHertzBudgetNationalAlamo折扣类型折扣编号组合编号代码标题”;//在新div中创建文件
ni.儿童基金会(新分部);

对于(i=0;i从你给我们的信息很难判断。但我的第一个猜测是:

for(i=0; i<discountForm.elements.length;i++){
  if(numOfDivs != i-1){
    if(oldDivIdName.children[i].value.length == 0){
      removeElement(divIdName);
      alert('Please enter all fields');
    }
  }
}

但从我看到的情况来看,i是指表单中元素的数量……而不是oldDivIdName的子元素的数量。如果表单中的元素比oldDivIdName中的元素多,则oldDivIdName.children[i]的值将为null。并且“value”未定义为空。

从您提供的信息很难判断。但我的第一个猜测是:

for(i=0; i<discountForm.elements.length;i++){
  if(numOfDivs != i-1){
    if(oldDivIdName.children[i].value.length == 0){
      removeElement(divIdName);
      alert('Please enter all fields');
    }
  }
}
第一次调用此方法时,allDivTags.length是否为null或负值,以及结果 未获取元素:

var oldDivIdName = document.getElementById(allDivTags[numOfDivs].id); 

numOfDivs最初设置在哪里,或者它的用途是什么?发布更相关的代码。numOfDivs统计表单中的DIV数为什么使用
var numOfDivs=(allDivTags.length-1)
,如果存在5个div,那么它将在
numOfDivs中分配4个div
确实不清楚您在这里试图做什么。请不要让这里的志愿者试图猜测您在做什么。相反,使用代码注释解释每个点发生了什么,然后解释问题发生的位置。我刚刚更新了我的问题,请查看其是否正确现在对你更清楚了,谢谢你的时间