2013-05-14 29 views
0

我目前正在嘗試對bookweb動態生成的課本列表(書店購物車解決方案)進行排序。我想按教科書類型訂購或推薦購物車。目前,信息由購物車問題在類型字段中提供,因爲我們無法編輯購物車cgi文件以便像這樣對它們進行排序。因此,初級排序是按科目,學生可以輸入4,二級排序按教科書類型開處方或推薦排序。格式是在目前,如下:如何使用html,javascript,css或其他方式按書本中的顏色代碼或類別分類課本?

Title    Type   Author   ISBN    Price 

Subject Name  
Textbooks   Prescribed xxxx    xxxx    xxx 
Textbooks   Recommended xxxx    xxxx    xxx 

Subject Name....//it then repeats for all subjects entered 

我需要的是:

Title   Author   ISBN    Price 

Subject Name 
Prescribed  
Textbooks  xxxxx   xxxx    xxx 
Recommended 
Textbooks  xxxxx   xxxx    xxx 

Subject Name....//it then repeats for all subjects entered 

我一直在使用Java腳本和CSS顏色代碼根據類型的書籍嘗試,但它只做第一行和僅規定

if (<BOOKWEB-TYPE> == "Prescribed"){ 
    //alert("prescribed"); 
    document.getElementById("textbook").className = "bsPrescribed"; 
} 
else if (<BOOKWEB-TYPE> == "Recommended"){ 
    //alert("recommended"); 
    document.getElementById("textbook").className = "bsRecommended"; 
} 

我把警報進行故障排除,甚至那麼只有警覺規定的出現,即使有好書推薦列表。我也試過getElementsByName,但根本沒有任何作用。即使它做了,雖然我仍然有混合的顏色,因爲它不會按照這兩個類別(規定的或推薦的)優先選擇書籍。

什麼是最快,最簡單的方法來實現這一點。 謝謝。

UPDATE1:

現在的getElementById甚至沒有突出的第一行,它確實改變了類,但在CSS從未生效。現在連班級也不會改變。

UPDATE2:

哎呀我拼寫錯誤,在這裏,固定,並檢查了代碼膨脹的罰款,但現在它只是不運行該腳本可言,進一步瞎搞我意識到我需要圍繞這樣quoatation標記:

if ("<BOOKWEB-TYPE>" == "Prescribed"){ 
    alert("prescribed"); 
    document.getElementById("textbook").className = "bsPrescribed"; 
} 

else if ("<BOOKWEB-TYPE>" == "Recommended"){ 
    alert("recommended"); 
    document.getElementById("textbook").className = "bsRecommended"; 
} 

但現在它的作用是隻更新和顏色的第一行是綠色時,在規定的書籍達到了和黃的時候推薦的書都達到了(按照定義的CSS clases ),但它不會改變第一行之後的任何其他書籍的類別。雖然警報顯示它們應該很好,但我知道它的區別是從推薦的。

更新3:

嘗試這樣做,現在連高亮不起作用在課堂上不會改變。我認爲相同的ID會是一個問題。

if ("<BOOKWEB-TYPE>" == "Prescribed"){ 
    alert("prescribed"); 
    document.getElementsByName("textbook").className = "bsPrescribed"; 
} 
else if ("<BOOKWEB-TYPE>" == "Recommended"){ 
    alert("recommended"); 
    document.getElementsByName("textbook").className = "bsRecommended"; 
} 

更新4: 的教科書行

<tr name="textbook" id="textbook" valign=top> 
<td align=center valign=top class="bntablerow"><input type="checkbox" name="<BOOKWEB-APN>" /></td> 
<td id="bntable" class="bntablerow"><a href="<BOOKWEB-BINHREF>details<BOOKWEB-CGIEXT>?ITEMNO=<BOOKWEB-APN>"><BOOKWEB-TITLE></a></td> 
<td class="bntablerow"><BOOKWEB-TYPE>&nbsp;</td> 
<td class="bntablerow"><BOOKWEB-AUTHOR>&nbsp;</td> 
<td class="bntablerow"><BOOKWEB-ISBN>&nbsp;</td> 
<td align="right" class="bntablerow">$<BOOKWEB-PRICE></td> 

更新5的HTML代碼: 所以我改變了代碼:

var myTR = document.getElementsByTagName('tr'); 
    for (var i=0;i<myTR.length;i++) { 
    if ("<BOOKWEB-TYPE>" == "Prescribed") { 
     myTR[i].className = 'bsPrescribed'; 
    } 
    } 

這顏色規定和離開建議無色這是好的,但親瑕疵是,它只適用於一個主題,如果你有兩個或三個主題,然後着色所有的行。有任何想法嗎?

+1

'if( =「Prescribed」)'你沒有檢查,你試圖賦值。更改爲'if( ==「」Prescribed「)' – Morpheus 2013-05-14 07:29:05

+0

檢查更新2的問題 – 2013-05-15 04:13:13

回答

0

由於@Morpheus提到=是一個賦值運算符。因此,您將分配​​值Prescribed而不是檢查它是否包含該值。

您應該使用比較運算符=====

一些more information

+0

謝謝,我知道它,但錯誤鍵入它。請檢查代碼中的更新2。 – 2013-05-15 04:13:52

+0

查看我發送的更多信息鏈接。你試圖做的是檢查包含在變量''中的值是否包含'Prescribed'的值是否正確?如果是這種情況,您需要做的是從''中提取值,將其分配給一個變量,然後進行比較。你現在正在做的事情永遠不會匹配,即條件語句永遠不會返回'真正的' – zik 2013-05-15 07:08:14

+0

它確實檢查值並相應地返回true或false,它現在不做的是改變行元素的類,它具有id =「textbook」和name =「textbook」,它只改變了它的第一次出現。所以如果規定,規定,推薦,規定,第一行應該是綠色,綠色,黃色和綠色。分別代替綠線,綠線,黃線,綠線。 – 2013-05-15 13:13:34

0

getElementsByName()在您的情況下選擇名稱爲textbook的所有元素。您需要使用getElementById()來獲取一個元素並對其進行設置,但它的ID必須是唯一的。給你的元素提供唯一的ID,你應該排序。

+0

這絕對是我認爲突出顯示問題的原因,但是如何動態創建id,因爲圖書創建是動態的。目前tr代碼是'<! - 書籤細節在這裏 - >'。檢查更新4 – 2013-05-16 23:20:54

+0

因此,每個'tr'具有相同的id和名稱?你可以改變使用類而不是ID?像這樣'' – Morpheus 2013-05-17 10:17:59

相關問題