2014-09-04 110 views
0

在HTML中,我有一個數組,我想根據條件在表中顯示該數組值, 數組具有「No Cust」和其他值。我只想顯示其他值。數組大小可能會動態變化。所以我嘗試了下面的代碼。這是創建該表而不顯示文本值,請幫助根據條件在動態表格中顯示數組值

<HTML> 
    <HEAD> 
     <TITLE>Sample Page that Writes Out an HTML Table</TITLE> 
    </HEAD> 
    <BODY> 
     <SCRIPT Language="JavaScript"> 
      var text = ["No Cust", "No Cust", "20 cust", "No Cust", "30 Cust", "80 cust", "50 cust"]; 
      count=0; 
      var text2 = ""; 

      for (i=0; i<7; i++) { 
       if (text[i] == "No Cust") { 
        continue; 
       } 
       else { 
        text2[count] = text[i]; 
        count = count + 1; 
       } 
      } 

      document.write('<table border="1" cellspacing="1" cellpadding="5">') 

      for(j = 0; j < count; j++) { 
       document.write('<tr>') 
       document.write('<td> text2[j] </td>') 
       document.write('</tr>') 
      } 

      document.write('</table>') 
     </SCRIPT> 
    </BODY> 
</HTML> 
+1

不適用於您自己。 w r i t e''。 – 2014-09-04 15:50:33

+0

+1不要使用'd o c u m n t t。 w r i t e''。 – denisol 2014-09-04 15:54:40

回答

0

這可以實現單環,如下:

var text = ["No Cust", "No Cust", "20 cust", "No Cust", "30 Cust", "80 cust", "50 cust"]; 

    document.write('<table border="1" cellspacing="1" cellpadding="5">'); 
    for (i = 0; i < text.length; i++) { 
     if (text[i] == "No Cust") { 
      document.write('<tr>'); 
      document.write('<td>' + text[i] + '</td>'); 
      document.write('</tr>'); 
     } 
    } 
    document.write('</table>'); 

Working Fiddle

0

你在你的代碼中的錯誤:

document.write('<td> text2[j] </td>') 

應該

document.write('<td>' + text2[j] + '</td>') 
+0

它在表格中顯示爲+ text2 [j] +,但不是實際的數組值 – 2014-09-04 15:51:20

0

您試圖通過在「'」(單引號)內包含text2 [j]作爲靜態文本。 所以,文件撰寫( '' +文本2 [J] + '')將解決此問題

我已經重構你的for循環位來處理陣列的動態長度: -

<!DOCTYPE html> 
<HTML> 
<HEAD> 
    <TITLE>Sample Page that Writes Out an HTML Table</TITLE> 
</HEAD> 
<BODY> 
    <SCRIPT Language="JavaScript"> 
     var text = ["No Cust", "No Cust", "20 cust", "No Cust", "30 Cust", "80 cust", "50 cust"]; 
     count=0; 
     var text2 = new Array(); 

     for (i=0; i<text.length; i++) { 
      if (text[i] == "No Cust") { 
       continue; 
      } 
      else { 
       text2[count] = text[i]; 
       count = count + 1; 
      } 
     } 

     document.write('<table border="1" cellspacing="1" cellpadding="5">') 

     for(j = 0; j < count; j++) { 
      document.write('<tr>') 
      document.write('<td>'+ text2[j] +'</td>') 
      document.write('</tr>') 
     } 

     document.write('</table>') 
    </SCRIPT> 
</BODY> 
</HTML> 

如果您想跳過兩個循環並使用一個,請使用下面的代碼:

<SCRIPT Language="JavaScript"> 
     var text = ["No Cust", "No Cust", "20 cust", "No Cust", "30 Cust", "80 cust", "50 cust"]; 
     document.write('<table border="1" cellspacing="1" cellpadding="5">'); 
     for (i=0; i<text.length; i++) { 
      if (text[i] != "No Cust") { 
       document.write('<tr>') 
       document.write('<td>'+ text[i] +'</td>') 
       document.write('</tr>') 
     } 
     }   
    </SCRIPT> 
1

腳本中有幾處錯誤。首先,其他人注意到的語法是不正確的。當你不需要時,你正在修復陣列的長度。您還在過濾器中不必要地匹配「否」。您多次寫入DOM,這非常昂貴。試試這個:

var text = ["No Cust", "No Cust", "20 cust", "No Cust", "30 Cust", "80 cust", "50 cust"], 
    text2 = [], 
    i; 


for (i = 0; i < text.length; i++) { 
    if (text[i] !== "No Cust") { 
     text2.push(text[i]); 
    } 
} 

var table = '<table border="1" cellspacing="1" cellpadding="5">'; 

for (i = 0; i < text2.length; i++) { 
    table += '<tr>'; 
    table += '<td>' + text2[i] + '</td>'; 
    table += '</tr>'; 
} 

table += '</table>'; 

document.getElementById('content').innerHTML = table; 

http://jsfiddle.net/7fbq3ps7/

0

你的代碼是好的,但我會改變一些事情:文件撰寫

  • 爲什麼不加入數組

    1. 不使用創建表? (加入比文字串聯短更快&)

    var text=['No Cust','No Cust','20 cust','No Cust','30 Cust','80 cust','50 cust'], 
        l=text.length, 
        c=0, 
        A=[]; 
    for(;c<l;c++){ 
    text[c]=='No Cust'||A.push(text[c]) 
    } 
    document.body.appendChild(document.createElement('table')).innerHTML= 
    '<tbody><tr><td>'+A.join('</td></tr><tr><td>')+'</td></tr></tbody>'; 
    

    注意:如果它是一個大表使用document.createDocumentFragment()

    DEMO

    http://jsfiddle.net/5tswopt4/

    ,如果您有一些關於代碼的問題問。

  • 相關問題