2014-06-05 35 views
0

認爲我有這樣的Java循環的(不是一個確切的代碼,無論它是一個真正有效的代碼,而只是給你的情況一般的角度來看):極品無數循環dillema合理的解決方案

print "<ul>"; 
while (res = fetch(database)) { 
    print ("<li>" + res.col['data'] + "</li>"); 
} 
print "</ul>"; 

和我有這個CSS,這使得列表中的最後一個項目有紅色。

ul li:last-child { color: red; } 

這在大多數瀏覽器上都能正常工作。問題是:

  • 我需要使這項工作也在IE8上。
  • IE8不支持最後一個孩子。
  • 我無法測試「while」的當前迭代是否正在輸入最後一次迭代。或者讓我們說,我無法檢查循環何時結束。這不是一個普通的循環,但我們只是這樣說。所以我不能給最後的<li>一個班,比如class="lastchild"
  • 我也嘗試過使用javascript和jquery,並且都不能選擇「最後一個孩子」,因爲它們取決於選擇的CSS,我認爲。

在這種情況下最好的方法是怎樣的?謝謝。

+0

我在發佈此問題之前正在查看該問題。但這個問題與我的不同之處在於它只有兩列。這是一個簡單的解決方案,通過添加一個類。我讀到了那個問題的解決方案之一。我的問題是一個不可數的循環,這真的是不可數的。無法測試和檢測循環何時結束。 –

+1

http://selectivizr.com/從來沒有測試過,但你應該看看:js模擬僞選擇器在探險家 –

+0

@LorenzoBoccaccia看起來像一個可行的解決方案。我會試着去研究它。 :) 謝謝。 –

回答

1
print "<ul>"; 
String liText=null; 
while (res = fetch(database)) { 
    if (liText!=null) { 
     print ("<li>" + liText + "</li>"); 
    } 
    liText=res.col['data']; 
} 

if (liText!=null) { 
    print ("<li style='the last element style'>" + liText + "</li>"); 
} 
print "</ul>"; 

移動最後一行添加了同時和應用有

+0

我認爲這可以工作。我會先嚐試一下。爲什麼我從來沒有這樣想過......謝謝。 –

0

所需樣式假設的問題是在Java中,我很奇怪,爲什麼沒有辦法檢測到最後一個記錄。可能您需要首先重新考慮您的數據結構,將數據填充到Map或List中,然後迭代。

而且,如果這是不可能的,你可以選擇一個StringBuilder instnace來構建整個String html標籤,然後用所需的樣式代替最後的li元素,然後將它放入print陳述語句。

即使您嘗試使用JavaScript進行編碼,上面的幾點也是有效的,只需稍加改動即可。

+0

,因爲它實際上是Enfinity,它是Java之上的一個框架。取數據庫並將其打印到自定義標籤,這使得事情變得複雜,因爲我無法檢查循環中的數據。甚至從循環中獲取數據,循環本身也必須使用自定義標籤完成。在我的操作領域唯一的事情是

    ,
,
  • ,因爲這是我實際上打印在我的代碼上。其他的東西都是通過自定義標籤中的任何代碼來打印的,這些代碼是由其他人開發的。 –

    +0

    好吧......對不起......沒有想到這一點。不管怎麼說,多謝拉。我認爲斯坦尼斯拉夫的解決方案應該有所幫助。如果不是,請嘗試使用基於Id的jQuery元素選擇器,但與StanislavL的解決方案相比,這將不復雜。 –

    +0

    沒關係哈哈。雅,斯坦尼斯拉夫的解決方案的作品。我只需要一個合理的解決方案。 :)感謝您的迴應。 –

    相關問題