0

アップデート:

#output div の内容が空である理由がようやくわかりました。これは、コンテンツがサーバーから取得され、その処理に時間がかかるためです。そのため、ドキュメントが読み込まれるまでに、この div のコンテンツはまだ空です。

JavaScript や jQuery など (クライアント側プログラミング) のみを使用して、遅延した div コンテンツから情報を抽出することについて考えている人はいますか?


非常に大きな文字列を格納する変数があり、その内容は html です。それをコンテンツと呼びましょう。

それから

var html = $.parseHTML(コンテンツ);

この後、このチャンクを見つけたい(そしてそこから値を抽出したい)

<div id="output" style="float:left;width:150px;margin:30px 0 0 1px;"><div class="result-title">Caltex/Woolworths St Kilda</div><div class="result-text">price: 152.9c<br>address: 99 Chapel St &amp; Inkerman St, St Kilda East</div><div class="result-title">BP East Prahran</div><div class="result-text">price: 152.9c<br>address: 549 High St &amp; Chatsworth Rd, Prahran</div><div class="result-title">BP Balaclava</div><div class="result-text">price: 152.9c<br>address: 308 Carlisle St &amp; Blenheim St, Balaclava</div><div class="result-title">7 Eleven St Kilda</div><div class="result-text">price: 153.9c<br>address: 154-158 St Kilda Rd &amp; Alma Rd, St Kilda</div><div class="result-title">BP AA Prahran</div><div class="result-text">price: 153.9c<br>address: 500 Malvern Rd, Prahran</div></div>

私はそれをループしようとしましたが、そのチャンクを見つけるためにどの属性を使用すべきかわかりません。

 function onS(data)
           {
               var html = $.parseHTML(data.responseText);
               $.each(html, function (i, ele) {
                   if (ele.nodeName == '#div')
                   {
                       alert('found it!!!');
                   }
               });
               alert("Data Loaded: " + data.responseText);
           }

助けてください。

****アップデート:****

コード:

function onS(data)
           {
               // Niclas
               var nodes = $('#output', data.results[0]);
               alert("Data Loaded: " + nodes.html());

               //Adeneo
               var node = $(data.results[0]).find('div#output'); 
               alert("Data Loaded: " + node.html());
           }

実行時の値 (innerHTML を見てください) は、どちらの方法でも空です。

(写真が小さすぎるように見えます。Ctrl + マウス ホイールを押して拡大/縮小できます)

ここに画像の説明を入力

4

3 に答える 3

0

文字列を取得するために ajax を使用しているようで、dataType を html に設定するだけで自動的に解析されます。
そのデータ内の要素を見つけるには、通常の DOM トラバーサル メソッドを使用します。

$.ajax({
    url : 'somewhere.php',
    dataType : 'html'
}).done(onS);

function onS(data) {
     var node = $(data).find('#div'); // or filter('#div') for root elements

     alert("Data Loaded: " + node.html());
}

何らかの理由で反復する必要がある場合は、 tagName または id のいずれかを探しているように見えますか?

$.each(html, function (i, ele) {
    ele.tagName // returns 'div', 'span' etc. often in uppercase
    ele.id // would return the id, 
           // and from the hashsign it looks like it's what you're trying to do

    ....
});
于 2013-08-06T15:59:27.137 に答える
0

私はついにそれを理解しました。

div コンテンツが空である理由は、html ドキュメントが読み込まれてから 2 ~ 4 秒後に #output div が生成されるためです。そのため、onS() メソッドがトリガーされたとき、その div のコンテンツは生成されていません。

クロスドメイン Web サイトから div の生成/動的/遅延コンテンツを取得する方法については、次の質問を参照してください。

JavaScript(jQueryなど)を使用して、外部Webサイトページから遅延/生成/動的コンテンツを取得する方法

于 2013-08-08T04:03:07.013 に答える