2017-08-01 52 views
1

我嘗試建立於JavaScript的innerHTML絲毫動態表。但是當webapp運行時,它僅打印console.log,但不會生成表格。構建動態表絲毫的innerHTML

我試圖以兩種方式:

第一:

success: function (data, status, jqXHR) { 


     $.each(data, function (index, dati) { 

      console.log(dati) 


      var html = "<table width=\'450\' bgcolor=\'white\' border=\'2\' bordercolor=\'black\' cellpadding=\'10\' cellspacing=\'1\'>\n" + 
       " <tr style=min-width:850px>\n" + 
       "  <td>dati.codiceCOmmessa </td>\n" + 
       "  <td>dati.commessaMainSub</td>\n" + 
       "  <td>dati.settoreCliente</td>\n" + 
       "  <td>dati.nomeCliente</td>\n" + 
       "  <td>dati.titoloQuals</td>\n" + 
       "  <td>dati.keyWordsTopic</td>\n" + 
       "  <td>dati.keyWordsActivities</td>\n" + 
       "  <td>dati.anno</td>\n" + 
       "  <td>dati.dataInizio</td>\n" + 
       "  <td>dati.dataFine</td>\n" + 
       "  <td>dati.referente</td>\n" + 
       "  <td>dati.referenteDoc</td>\n" + 
       "  <td>dati.sviluppatore</td>\n" + 
       "  <td>dati.path</td>\n" + 
       " </tr>\n" + 
       "</table>" 

      html.innerHTML; 
     }) 
    }, 

和第二(絲毫body.innerHTML或node.innerHTML,該應用程序出錯):

success: function (data, status, jqXHR) { 


     $.each(data, function (index, dati) { 

      console.log(dati) 

      innerHTML = "<table width=\'450\' bgcolor=\'white\' border=\'2\' bordercolor=\'black\' cellpadding=\'10\' cellspacing=\'1\'>\n" + 
       " <tr style=min-width:850px>\n" + 
       "  <td>dati.codiceCOmmessa </td>\n" + 
       "  <td>dati.commessaMainSub</td>\n" + 
       "  <td>dati.settoreCliente</td>\n" + 
       "  <td>dati.nomeCliente</td>\n" + 
       "  <td>dati.titoloQuals</td>\n" + 
       "  <td>dati.keyWordsTopic</td>\n" + 
       "  <td>dati.keyWordsActivities</td>\n" + 
       "  <td>dati.anno</td>\n" + 
       "  <td>dati.dataInizio</td>\n" + 
       "  <td>dati.dataFine</td>\n" + 
       "  <td>dati.referente</td>\n" + 
       "  <td>dati.referenteDoc</td>\n" + 
       "  <td>dati.sviluppatore</td>\n" + 
       "  <td>dati.path</td>\n" + 
       " </tr>\n" + 
       "</table>" 


     }) 
    } 

有人可以幫助我嗎?我錯了?

+0

'dati.keyWordsTopic'的變量,嘗試像'」​​「+ dati.keyWordsTopic +」 \ n」 +' – Satpal

+0

你需要寫你在某處所創建的字符串,這意味着你需要調用元素的'.innerHTML'實際編寫此頁面上。 –

+0

所有DATI是 –

回答

1

起初,循環可以使事情變得更容易(和字符串文字也是如此),所以可以簡單地顯示所有對象的值:

var html = 
`<table width='450' bgcolor='white' border='2'bordercolor='black' cellpadding='10' cellspacing='1'> 
    <tr style='min-width:850px'> 
     ${ 
      Object.values(dati) 
      .map(
       value => `<td>${value}</td>` 
      ).join("\n") 
      } 
     </tr> 
    </table>`; 

或者,如果你不喜歡的文字,同樣適用於串接:

var html =  
    "<table width='450' bgcolor='white' border='2'bordercolor='black' cellpadding='10' cellspacing='1'><tr style='min-width:850px'>" 
+ Object.values(dati) 
    .map(
     value => "<td>"+value+"</td>" 
    ).join("\n") 
+ "</tr></table>"; 

而you.may想做某事與HTML

document.body.innerHTML += html; 

A small demo

+0

總是寫漂亮的代碼,不能從你哈哈脫身:P –

+0

@tez的是,諷刺? !/ –

+0

哈哈是...一個巨大的讚美。我只是知道你什麼時候我不會發布答案。 (+1) –

0

您需要使用現有元素的.innerHTML方法來寫你的函數將文檔生成的HTML。這是一個非常簡單的例子,沒有真實的數據。

var success = function(data, status, jqXHR) { 
 

 

 
    $.each(data, function(index, dati) { 
 

 
    console.log(dati) 
 

 

 
    var html = "<table width=\'450\' bgcolor=\'white\' border=\'2\' bordercolor=\'black\' cellpadding=\'10\' cellspacing=\'1\'>\n" + 
 
     " <tr style=min-width:850px>\n" + 
 
     "  <td>dati.codiceCOmmessa </td>\n" + 
 
     "  <td>dati.commessaMainSub</td>\n" + 
 
     "  <td>dati.settoreCliente</td>\n" + 
 
     "  <td>dati.nomeCliente</td>\n" + 
 
     "  <td>dati.titoloQuals</td>\n" + 
 
     "  <td>dati.keyWordsTopic</td>\n" + 
 
     "  <td>dati.keyWordsActivities</td>\n" + 
 
     "  <td>dati.anno</td>\n" + 
 
     "  <td>dati.dataInizio</td>\n" + 
 
     "  <td>dati.dataFine</td>\n" + 
 
     "  <td>dati.referente</td>\n" + 
 
     "  <td>dati.referenteDoc</td>\n" + 
 
     "  <td>dati.sviluppatore</td>\n" + 
 
     "  <td>dati.path</td>\n" + 
 
     " </tr>\n" + 
 
     "</table>" 
 

 

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

 
success([0, 1], null, null);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="wrapper"></div>

+0

您可能需要啓發OP解釋爲字符串的變量? –

+0

@TezWingfield也許我做的,但我認爲這是除了問題的範圍。另外,還有很多其他更好的答案,所以我寧願他檢查他們。 –

0

首先,你需要的dati.variables追加到字符串,而不是讓他們爲字符串本身喜歡的一部分:

innerHTML = "<table width=\'450\' bgcolor=\'white\' border=\'2\' bordercolor=\'black\' cellpadding=\'10\' cellspacing=\'1\'>\n" + 
       " <tr style=min-width:850px>\n" + 
       "  <td>" + dati.codiceCOmmessa + "</td>\n" + 
       "  <td>" + dati.commessaMainSub + "</td>\n" 

然後,你需要追加您創建的頁面,這取決於您要添加表的HTML。這將追加到身體:

$(innerHTML).appendTo($('body')); 

或身體設爲您的HTML:

$('body').html(innerHTML); 
+0

@Jonasw杜!修復它(我懷疑他想要將它添加到身體無論如何,只是用於例子) –

+0

@snape沒有問題。反正我仍然更喜歡$(document.body).append(innerHTML) –