2014-10-03 41 views
0

我目前正在嘗試更改我的網頁上的顯示順序。我目前的代碼如下。數據排序問題Perl和HTML

<div class="itemtitle"> 
    [% IF session.Type.match('B|N|H|BI') %] 
     [% session.TitleVal %]<br> 
     [% IF slot.getLocationString %]<div class="location">Location: <span>[% slot.getLocationString %]</span></div>[% END %] 
    [% ELSE %] 
     <a href="[% session.webprogram.getFilename %]">[% session.TitleVal %]</a><br> 
     [% IF slot.getLocationString %]<div class="location">Location: <span>[% slot.getLocationString %]</span></div>[% END %] 
     [% IF session.getParentsCollection('Program', ['ReadOnly','Y']) %] 
      <div class="sessionsponsor">Hosts: <span>(Joint 
      [% FOREACH parent IN session.getParentsCollection('Program') %] 
       [% IF loop.last && loop.first %]with [% END %][% IF !loop.last && loop.first %]between [% END %][% IF loop.last && !loop.first %]and [% END %]the [% IF loop.first %]<strong>[% END %][% parent.Title %][% IF loop.first %]</strong>[% END %][% IF !loop.last %]; [% END %] 
      [% END %])</span></div> 
     [% ELSE %] 
      [% IF session.program.Title %]<div class="sessionsponsor">Host: <span><strong>[% session.program.Title %]</strong></span>[% END %]</div> 
     [% END %]  
    [% END %] 

第一個IF語句代碼塊,我總是想在網頁上的div的頂部顯示無論場景。基本上每當session.type = B N H或BI。然而,它目前發生的方式是第二部分顯示在div「第一部分」之上。我一直在努力使這個方法正確執行,並且一直在圍繞着一段時間。我開始懷疑我可能需要深入挖掘以解決問題的根源。但是我想我會看到有沒有人知道在這裏先做這件事的方法。如果有人有一些建議,我將不勝感激。目前的輸出看起來是如果會話等於那些參數,那麼它在div的底部。第一個else塊坐在div的頂部。我想反過來這一些如何。

<div class="itemnumber">  
    <a href="Session36494.html">2WxClimate Poster Session</a> 
</div> 
<div class="itemtitle"> 
     Formal Poster Viewing with Coffee Break<br> 
     <div class="location">Location: <span>Hall C3 (The Georgia World Congress Center)</span></div> 

凡說2wxClimate即else塊,當session.type不等於B n的H或BI執行。當session.type等於這些值時,第二個塊顯示出來。目前它正在展示茶歇,我希望它以相反的順序顯示。

</div> 
+0

你是什麼意思「顯示第一」?這是在一個循環內嗎? – AKHolland 2014-10-03 13:58:53

+0

對不起,我是指在div的頂部。我只是做了一些編輯,你看到這個快速xD。 – 2014-10-03 13:59:48

+0

如果「ELSE」正在執行,那麼你的'session.Type'不符合標準。您需要調查潛在變量以找出原因。 – Cfreak 2014-10-03 14:00:41

回答

2

您的問題並非來自您向我們展示的代碼。

當您向我們展示的TT代碼處理完畢後,您將從外部[% IF %]或外部[% ELSE %]塊獲得輸出。你不會得到兩個。

它在我看來,就像您向我們顯示的示例輸出有一個由[% ELSE %]分支生成的塊,後跟一個由[% IF %]分支生成的塊。這種情況發生的唯一方法是如果你的例子中的所有代碼都被處理了兩次。所以我猜測這個代碼有一些循環。第一次循環時,[% ELSE %]塊運行,第二次循環時運行[% IF %]塊。

因此修復您的問題與您向我們展示的代碼無關。這是代碼(或數據)驅動你的循環的問題。如果您的session變量是從數組中填充的,那麼您需要在開始循環之前對數組進行排序,以便首先在數組中顯示要顯示的元素。

+0

好的,我懷疑這是問題。謝謝你爲我澄清。 – 2014-10-03 14:35:16

+0

如果你發現一個有用的答案,隨時upvote或接受它:-) – 2014-10-03 14:42:05

+1

感謝您成爲我的橡皮鴨。 – 2014-10-03 14:47:22