1

製品情報の行がたくさんあり、タイトル、製品ID、価格を取得したいと思います。$ .eachを使用してすべてをループすると、タイトルと製品IDに対しては機能しますが、価格に対しては機能しません。私は常にすべての行のすべての価格を取得します。これが私のコードです:

<tr id="ric685197870" class="n_ListTab1 ric_art">
            <td class="n_ListPic"><img title="Das Angebot verfügt über ein Bild." alt="Das Angebot verfügt über ein Bild." src="https://pics.ricardostatic.ch/ImgWeb/2/V3/listing/img.gif"></td>
            <td class="n_ListIcons"><a title="Das Angebot endet in weniger als 3 Stunden." href="javascript:help('symbol_uebersicht')"><span class="sprite icon_3h"></span></a></td>
            <td class="n_ListTitle"><a class="entry-title" href="http://www.ricardo.ch/kaufen/buecher-und-comics/belletristik/sonstige/ich-jagte-eichmann-s-wiesenthal/v/an685197870/" title="Ich jagte Eichmann/S.Wiesenthal">Ich jagte Eichmann/S.Wiesenthal</a></td>
            <td class="n_ListDate">11.9.2012 11:00</td>
            <td class="n_ListOffer">0</td>
            <td class="n_ListPrice">
            <div class="Auc">
                <span class="currency">CHF </span>0.10
            </div></td>
        </tr>
        <tr id="ric686793488" class="n_ListTab2 ric_art">
            <td class="n_ListPic"><img title="Das Angebot verfügt über ein Bild." alt="Das Angebot verfügt über ein Bild." src="https://pics.ricardostatic.ch/ImgWeb/2/V3/listing/img.gif"></td>
            <td class="n_ListIcons"><a title="Das Angebot endet in weniger als 3 Stunden." href="javascript:help('symbol_uebersicht')"><span class="sprite icon_3h"></span></a></td>
            <td class="n_ListTitle"><a class="entry-title" href="http://www.ricardo.ch/kaufen/buecher-und-comics/belletristik/romane/sonstige/angelika-overath-alle-farben-des-schnees/v/an686793488/" title="Angelika Overath: Alle Farben des Schnees">Angelika Overath: Alle Farben des Schnees</a></td>
            <td class="n_ListDate">11.9.2012 11:02</td>
            <td class="n_ListOffer">1</td>
            <td class="n_ListPrice">
               <div class="Auc">
                  <span class="currency">CHF </span>4.00
               </div></td>
</tr>

<script type="text/javascript">
$.each($(".n_ListTitle"), function(i, v) {
            var node = $(this);
            var nodeParent = node.parent();
            var nodeText = node.text();
            var nodePrice = nodeParent.children(i)[5];

            var prodPrice = $(nodePrice.nodeName + ' div').text();
            var prodId = nodeParent.attr('id').replace('ric', '');
            var prodTitle = nodeText;

            var json = {
                id : prodId,
                price : prodPrice,
                currency : "CHF",
                name : prodTitle
            };
            console.log(json);
        });

私はこれを手に入れます:

オブジェクト
通貨: "CHF"
id: "681625138"
名前: "BEVERLEY HARPER:HELLER MOND IN SCHWARZER NACHT--TASCHENBUCH"
価格: "ここに問題があります:すべての行のすべての価格"

私はそれが理解できることを願っています、そして誰かが私が理解するのを手伝ってくれることを願っています。ありがとう!

4

4 に答える 4

4
var prodPrice =  $(nodePrice.nodeName + ' div').text();

これはあなたが思っていることをしません。 nodePrice.nodeNameである"tr"ため、セレクターは次のようになります。

$('tr div')

divつまり、の子であるすべてを選択しているので、すべての価格を取得していますtr

あなたが本当に欲しいのはこれです:

var prodPrice = $('div', nodePrice).text();

これは同等です$(nodePrice).find('div')

また:

var nodePrice = nodeParent.children(i)[5];

なんでここを通り過ぎるのiiは「配列」内のインデックスであり、には何の役にも立ちません.children。これを使用したい:

var nodePrice = nodeParent.children().eq(5);

または、さらに良い(これらのクラスがあるので、'emを使用しましょう):

var nodePrice = node.siblings('.n_ListPrice');
于 2012-09-25T14:38:00.553 に答える
2

これを試して:

var nodePrice = node.siblings(".n_ListPrice");

次に、を使用して実際の価格を抽出できます

$(nodePrice).text();
于 2012-09-25T14:42:18.307 に答える
1

これは配列用です(jQuery.each()):

$.each($(".n_ListTitle"), function(i, v) {

必要なもの(.each()):

$(".n_ListTitle").each(function(i, v) {
于 2012-09-25T14:36:55.400 に答える
1
var nodePrice = nodeParent.find('.n_ListPrice div');
var prodPrice = nodePrice.text();

後で行を追加する場合よりも、別のセレクターを使用eq(5)することをお勧めします。これをすべて変更する必要があります...を使用find()して、価格設定者のクラスを持つTDを検索し、その中のdivを選択します。そこに行きます:)

于 2012-09-25T14:45:36.007 に答える