2014-09-04 114 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/

    ,如果您有一些关于代码的问题问。

  • 相关问题