1

ウィキペディア API を使用して、キーワードが提供されている記事の最初のパラグラフだけを取得しています。

JSON 応答から書式設定されたテキストを抽出する必要がありますが、サイドバー (テーブル内にあり、クラス名が infobox になっている) などの不要な情報の一部を抑制してから、id が wi​​ki である div に表示します -

$.getJSON("http://en.wikipedia.org/w/api.php?" +
            "action=mobileview&format=json&page=" +
            keyword + "&redirect=no&sections=0&prop=text&" +
            "sectionprop=toclevel%7Clevel%7Cline%7Cnumber" +
            "%7Cindex%7Cfromtitle%7Canchor&callback=?",
          function(json) { 
                    $('#wiki').html(json.mobileview.sections[0].text)
                              .find("dl,sup,.thumb,table.infobox,table.metadata")
                              .remove().end(); 
          }
);

要求されたウィキペディア ページの HTML コードを含む JSON 応答からタグ/セレクターを削除するように jQuery トリックを適用しました。HTML/JS で記述された Windows 8 ストア アプリで上記のスニペットを使用したいと考えています。次の行をネイティブ JavaScript に変換し、jQuery を使用せずにセレクター削除コードを実装したい -

$('#wiki').html(json.mobileview.sections[0].text)
           .find("dl,sup,.thumb,table.infobox,table.metadata")
           .remove().end(); 

私は JavaScript の初心者です。誰でもこの行を単純な JavaScript に変換できますか?

4

1 に答える 1

1
var wiki = document.querySelector('#wiki');
wiki.innerHTML = json.mobileview.sections[0].text;

var content = wiki.querySelectorAll("dl,sup,.thumb,table.infobox,table.metadata");

for (var i = 0; i < content.length; i++) {
    if (content[i].nodeName.toUpperCase() === "A")
        content[i].parentNode.insertBefore(content[i].firstChild, content[i]);

    content[i].parentNode.removeChild(content[i]);
}

これは、IE8以降を含むほとんどのブラウザで機能します。

于 2012-11-07T17:24:46.517 に答える