2013-04-29 78 views
1

對不起,如果這是一個簡單的問題給你。但我真的很難與這個問題如何使這段代碼更清晰?

在我們的應用程序中,我們有大量的每個頁面的ajax調用。我們正在使用jQuery ajax。目前我們正在做的是

當我們從類似myresults得到結果時,我們傳遞給函數populate,在那裏我們正在構建結果。

function populate(myresults) 
{   
    var str='<table>';  
    for(var i in myresults){ 
     str+='<tr>'; 
     str+=myresults[i].name; 
     str+='</tr>';  
    } 
    str+='</table>'; 

    $('#divId').html(str); 
} 

不完全是我們正在所有地方建造餐桌。代碼工作完美,但我認爲這樣寫代碼並不是正確的方法。我怎樣才能美化我的代碼。我可以使用jQuery或JavaScript。

+0

你可以在句子之間使用空格(除了javascript和jquery)嗎? – 2013-04-29 11:30:10

+0

這不是一個真正的問題,可能會被拒絕。 – MMM 2013-04-29 11:30:37

+0

一個簡單的改進就是使用模板引擎,比如把手。或者你可以更進一步,用knockoutjs,angularjs或類似的東西。 – NilsH 2013-04-29 11:30:41

回答

0

也許,創建一個新的DOM元素更正確?

像這樣:

function populate(myresults) 
    {   
    var str= $('<table />)';  
     for(var i in myresults){ 
     str.append($('<td />').text(myresults[i].name).appendTo($('<tr />'))); 
     } 
    $('#divId').empty().append(str); 
    } 
1

您應該運行通過像JSLint的或JSHint一個掉毛引擎你的代碼,你應該熟悉很好的做法。

這裏的(超過一個可能的解決方案)的一種方式來優化你的代碼:由別人的建議

function populate(myResults) 
{   
    var tab = $('<table />');  
    for(var i in myResults){ 
     if (myResults.hasOwnProperty(i)) { 
      var tr = $('<tr />'); 
      tr.append($('<td /'>, {text: i.name})); 
      tab.append(tr); 
     } 
    } 
    $('#divId').append(tab); 
} 

使用模板引擎:

function populate(myresults) { 
    var table = $(document.createElement('table'));  

    $(myresults).each(function (i) { 
     var row = $(document.createElement('tr')), 
      cell = $(document.createElement('td')).text(myresults[i].name); 
     row.append(cell); 
     table.append(row); 
    }); 

    $('#divId').append(table); 
} 
+0

var table = $(document.createElement('table'));'代碼中有一些拼寫錯誤...錯過了')'在jquery選擇器中關閉。 – 2013-04-29 12:05:00

+0

@圓頂,謝謝你發現。已修復它。 :) – 2013-04-29 12:06:20

0

你可以這樣做會更好,因爲這是一種更好,更易於維護的方法。