2012-04-03 70 views
-2

可能重複:
Is it possible to append to innerHTML without destroying descendants' onclick functions?如何在不刪除之前的innerHTML的情況下使用innerHTML?

我想一個數組轉換成HTML表格,但innerHTML的刪除它以前寫的。下面是代碼:

<html><div id="tablaP"></div> 

function cargar2() { 
    document.getElementById('tablaP').innerHTML= "<table>" 
    var h=1 
    for (i=0;i<miArray.length;i++){ 
     document.getElementById('tablaP').innerHTML = '<tr>' 
     for (j=0;j<miArray[i].length;j++){    
      document.getElementById("tablaP").innerHTML = '<td><td>' 
     } 
     document.getElementById('tablaP').innerHTML = '</tr>' 
     h++ 
    } 
    document.getElementById('tablaP').innerHTML = '</table>' 
} 
+0

這裏還有一個關於這個專題的SO問題:http://stackoverflow.com/questions/595808/is-it-possible-to-append-to-innerhtml-without-destroying-descendants-onclick-fu – 2012-04-03 11:24:02

回答

3

這很容易做到通過建立你的HTML字符串,然後用一個調用應用它:

function cargar2(){ 
    var h=1;//not sure why you have this 
    var html = ""; 

    html += "<table>"; 

    for (i=0;i<miArray.length;i++){ 
     html += '<tr>'; 

     for (j=0;j<miArray[i].length;j++){    
      html += '<td></td>' ;      
     } 

     html += '</tr>'; 
     h++; 
    } 

    html += '</table>'; 

    document.getElementById('tablaP').innerHTML = html; 
} 

編輯:修正了所有的代碼格式!

0

使用其他方法。將整個表格構建爲一個字符串,然後做一個innerHTML。

這樣,這將是快,兼容IE,具有與添加行動態表中的feew可怕的相關錯誤...

0

創建一個字符串變量和表的內容添加到所述變量,如:

0

您應該將所有表創建附加到一個字符串,然後最終將字符串分配給innerHTML,如下所示。

function cargar2(){ 
     var tableCreation = "<table>" 
    var h=1 
    for (i=0;i<miArray.length;i++) 
    {   
    tableCreation += '<tr>'  
    for (j=0;j<miArray[i].length;j++) 
    {      
     tableCreation += '<td></td>'    
     }  
    tableCreation += '</tr>' h++ 
} 

document.getElementById('tablaP').innerHTML = tableCreation; 
0

爲了有效地做到這一點,推HTML片段放到數組中,加入數組中的字符串成一個字符串,並使用innerHTML把它的元素:

function cargar2() { 
    var html = ['<table>']; 
    var h = 1; 
    for (i = 0; i < miArray.length; i++) { 
    html.push('<tr>'); 
    for (j = 0; j < miArray[i].length; j++) {    
     html.push('<td><td>'); 
    } 
    html.push('</tr>'); 
    h++; 
    } 
    html.push('</table>'); 
    document.getElementById('tablaP').innerHTML = html.join(''); 
} 
0

OMG如何許多東西播下了眼...

  1. 不要每次都要調用document.GetElementByID()div!

    使用參考(變量),而不是:

    變種myTableDiv =的document.getElementById( 'tablaP');

    myTableDiv.InnerHTML + = 「」

    myTableDiv.innerHTML + = 「」;

  2. 我主要建議設置一個字符串..並且只能最終傳遞InnerHTML。

    例如

    var myTableHTML =「」; VAR H = 1 爲(I = 0; I '; 對於(j = 0;Ĵ myTableHTML + = '';}
    myTableHTML + = ''; ħ++ } 的document.getElementById(' tablaP')。innerHTML = myTableHTML;

相關問題