-1

この壊れたコードを使用して html からデータを抽出するのに問題があります。誰がそれの何が悪いのか教えてもらえますか? これはjsfiddleの例です。http://jsfiddle.net/AjM7u/3/

var data = [];

var htmlData = '<li>';
htmlData += '    <a href="/mango/" >';
htmlData += '    <img src="./season/123434mango.jpg" width="180" height="148"';
htmlData += '         alt="mango season" class="png"></a>';
htmlData += '';
htmlData += '    ';
htmlData += '        <div class="thumbnail_label">ok</div>';
htmlData += '    ';
htmlData += '';
htmlData += '  <div class="details">';
htmlData += '    <div class="title">';
htmlData += '      <a  href=';
htmlData += '      "/mango/"> mango</a>';
htmlData += '      <span class="season">2</span>';
htmlData += '    </div>';
htmlData += '    <ul class="subject">';
htmlData += '      <li>read</li>';
htmlData += '    </ul>';
htmlData += '    <ul class="sub-info">';
htmlData += '      <li class="location">Europe</li>';
htmlData += '      <li class="price">2</li>';
htmlData += '    </ul>';
htmlData += '  </div>';
htmlData += '</li>';

console.log($.parseHTML(htmlData));

$($.parseHTML(htmlData)).each(function() {
    $(this).find("img").each(function() {
        var parent = $(this).parent();
        data.push({
            SRC: $(this).attr("src"),
            HREF: parent.find("a").attr("href"),
            LOCATION: parent.find(".location").text(),
            price: parent.find(".price").text(),
            season: parent.find(".season").text(),
            thumbnail: parent.find(".thumbnail_label").text(),
            SUBJECT: parent.find(".subject li").text()
        });
    });
});

function outputData() {
    var html = "";
    for(var i = 0; i < data.length; i++) {
        html += "SRC: " + data[i].SRC;
        html += "<br/>HREF: " + data[i].HREF;
        html += "<br/>LOCATION: " + data[i].LOCATION;
        html += "<br/>PRICE: " + data[i].price;
        html += "<br/>season: " + data[i].season;
        html += "<br/>thumbnail: " + data[i].thumbnail;
        html += "<br/>SUBJECT: " + data[i].SUBJECT;
        html += "<br/><br/>";

    }

    return html;
}

$("#output").html(outputData());

出力:

SRC: ./season/123434mango.jpg
HREF: undefined
LOCATION:
PRICE:
season:
thumbnail:
SUBJECT: 

期待される出力:

SRC: ./season/123434mango.jpg
HREF: /mango/
LOCATION:Europe
PRICE:2
season:2
thumbnail:ok
SUBJECT: read
4

4 に答える 4

1

1) あなたは入らなかっHREFdata.push

2)parent(変数)はタグのみを参照するため、.find()ここでは失敗します

var parent = $(this).parent();
parent.parent().find(".location")  // fails eventually

したがって、そうあるべきですparent.parent()

data.push({
            SRC: $(this).attr("src"),
            HREF: parent.attr("href"), //missed to add it
            LOCATION: parent.parent().find(".location").text(),
            price: parent.parent().find(".price").text(),
            season: parent.parent().find(".season").text(),
            thumbnail: parent.parent().find(".thumbnail_label").text(),
            SUBJECT: parent.parent().find(".subject li").text()
        });

JSFiddle

于 2013-07-31T18:11:12.657 に答える
0
        SRC: $(this).attr("src"),
        HREF: $(this).parent().attr("href")
        LOCATION: parent.find(".location").text(),
        price: parent.find(".price").text(),
        season: parent.find(".season").text(),
        thumbnail: parent.find(".thumbnail_label").text(),
        SUBJECT: parent.find(".subject li").text()
于 2013-07-31T18:07:37.103 に答える