2011-06-12 70 views
1

这里是我的Javascript代码:Internet Explorer中的JavaScript/DOM对象添加行问题

function generate(choice) 
{ 
    if(choice==1) 
    { 

     charge++; 


     var new_row=document.createElement("tr"); 
     var name="row"+charge;  
     new_row.setAttribute("name",name); 
     new_row.setAttribute("id",name); 

     var col1=document.createElement("td"); 
     var col2=document.createElement("td"); 
     var col3=document.createElement("td"); 
     var col4=document.createElement("td"); 

     col1.setAttribute("width","205"); 
     col2.setAttribute("width","191"); 
     col3.setAttribute("width","182");  
     col4.setAttribute("width","127"); 

     var list1=document.getElementById("rep0").cloneNode(true); 
     id="rep"+charge; 

     list1.setAttribute("id",id); 

     var list2=document.getElementById("item0").cloneNode(true); 
     name="items[]"; 
     list2.setAttribute("name",name); 
     id="item"+charge; 
     list2.setAttribute("id",id); 
     list2.setAttribute("onChange","match_row(this.id);"); 


//  clone_nodes(list2,"item0"); 

     var text=document.createElement("input"); 
     name="minutes[]"; 
     text.setAttribute("name",name); 
     text.setAttribute("value","15"); 
     id="minutes"+charge; 
     text.setAttribute("id",id); 
     text.setAttribute("type","text"); 

     var text2=document.createElement("input"); 
     name="charges[]"; 
     text2.setAttribute("name",name); 
     text2.setAttribute("value","28.00"); 
     id="charges"+charge; 
     text2.setAttribute("id",id); 
     text2.setAttribute("type","text"); 
     //text2.setAttribute("onChange","charge_calculator();"); 

     col1.appendChild(list1); 
     col2.appendChild(list2); 
     col3.appendChild(text); 
     col4.appendChild(text2); 

     new_row.appendChild(col1); 
     new_row.appendChild(col2); 
     new_row.appendChild(col3); 
     new_row.appendChild(col4); 

     charges1=document.getElementById("charges"); 
     charges1.appendChild(new_row); 

     final_charge=charge; 


    } 
    else if(choice==2) 
    { 

     payment++; 
     var new_row2=document.createElement("tr"); 


     var col11=document.createElement("td"); 
     var col22=document.createElement("td"); 
     var col33=document.createElement("td"); 

     col11.setAttribute("width","205"); 
     col22.setAttribute("width","206"); 
     col33.setAttribute("width","297");  


     var list11=document.createElement("select"); 
     name="payment_type[]"; 
     list11.setAttribute("name",name); 
     id="payment_type"+payment; 
     list11.setAttribute("id",id); 
     list11.setAttribute("onChange","set_payment_type(this.id);"); 
     clone_nodes(list11,"payment_type0"); 

     var text1=document.createElement("input"); 
     text1.setAttribute("type","text"); 
     name="amount[]"; 
     text1.setAttribute("name",name); 
     id="amount"+payment; 
     text1.setAttribute("id",id); 


     var list22=document.createElement("select"); 
     name="account[]"; 
     list22.setAttribute("name",name); 
     id="account"+payment; 
     list22.setAttribute("id",id); 
     list22.setAttribute("onChange","correspond2(this.id);"); 
     clone_nodes(list22,"account0"); 


     col11.appendChild(list11); 
     col22.appendChild(text1); 
     col33.appendChild(list22); 

     new_row2.appendChild(col11); 
     new_row2.appendChild(col22); 
     new_row2.appendChild(col33); 


     charges2=document.getElementById("payments"); 
     charges2.appendChild(new_row2); 
     final_payment=payment; 

    } 

} 

这里是与我打电话

<input type="button" name="Add More" id="Add More" value="Add More" onClick="generate(1);" /> 

一切HTML按钮代码工作像所有其他浏览器的魅力除了Internet Explorer 请帮我我卡住了。我也为IE工作。

+0

冗余代码是你的敌人! – 2011-06-12 13:33:06

回答

3

为了您自己的理智,请使用像jQuery这样的图书馆来实现这种功能。

+0

谢谢你的建议我会把它留在我的脑海里,但为了我的智慧,我只是找到了答案,它是你必须创建一个tbody元素,并添加创建行到tbody,然后将tbody添加到表 – ahhmarr 2011-06-12 13:32:43

+0

你可以在5分钟内学习到足够的jQuery来完成这个任务,并且jQuery问题可以更快地得到答案。 – 2011-06-12 13:37:03

0

你的代码不是很清楚,但我想你会将tr元素附加到表中。但是你不能直接在一个表中追加一个tr。您需要先创建一个tbody元素,然后将其添加到表格中,然后将tr添加到tbody元素中。

1

请不要使用appendChild方法将行添加到表中,或将单元格添加到表格行中。因此,您将避免显式创建TBODY元素,将其附加到表格,然后创建TR元素并将其附加到该TBODY。

有专门用于此用途的标准DOM方法。即:

1.)var newRow = myTable.insertRow(index)
在给定的索引处插入并返回一个新的空行(TR元素)。

2)myTable.deleteRow(index)
删除给定索引处的行。

3.)var newCell = myRow.insertCell(index)
在给定索引处插入并返回一个新的空单元格(TD元素)。

4.)myRow.deleteCell(index)
删除给定索引处的单元格。

如果索引参数超出范围,所有这些方法通常会引发错误。但是,在IE8等浏览器中,索引是可选的,如果省略,则在其父文件末尾插入或删除单元格或行。