0

現在、bookweb (書店カート ソリューション) によって動的に生成される教科書リストを並べ替えようとしています。カートを教科書の種類ごとに指定または推奨で注文したいです。現在、その情報はカートの問題によってタイプ フィールドに提供されています。カートの cgi ファイルを編集してそのように並べ替えることができないという問題です。1次ソートは教科別、4冊まで入力可能、2次ソートは教科書の種類別、規定・推奨の順にソートされています。現在の形式は次のとおりです。

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

タイプに応じて本を色分けするために Javascript と 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 も試しましたが、まったく機能しませんでした。たとえそうだとしても、好ましい2つのカテゴリ(処方または推奨)で本に分類されないため、色が混ざり合ったままになります。

これを達成するための最速で最も簡単な方法は何ですか。

アップデート1:

現在、getElementById は最初の行を強調表示することさえしていません。クラスは変更されましたが、CSS は有効になりませんでした。今でもクラスは変わりません。

更新 2:

おっと、ここでタイプミスして修正し、コードが正常に膨らむことを確認しましたが、今ではそのスクリプトがまったく実行されません。さらにいじってみると、引用符が必要であることに気付きました<BOOKWEB-TYPE>

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

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

しかし、今では、の最初の行のみを更新し、規定の本に到達すると緑色に、推奨される本に到達すると黄色に色付けされますが (定義された CSS クラスに従って)、他のクラスは変更されません。最初の行の後の本。アラートは正常に表示されますが、推奨と規定の違いはわかっています。

更新 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: 教科書の行の HTML コード:

<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: コードを次のように変更しました。

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

これは処方されたものに色を付け、推奨されるものは無色のままにしますが、問題は、2 つまたは 3 つの被験者がいる場合、一度に 1 つの被験者に対してしか機能せず、すべての行に色を付けることです。何か案は?

4

2 に答える 2

0

@Morpheus が言及したように、これ=は代入演算子です。したがって、その値が含まれているかどうかを確認するのではなく<BOOKWEB-TYPE>、値を割り当てています。Prescribed

==比較演算子orを使用する必要があります===

いくつかの詳細情報

于 2013-05-14T08:17:46.403 に答える