2016-04-01 8 views
0

ドキュメントの "a"内のすべてのヘッダ(h1〜h6)からテキストを抽出するjqueryにコードを書きました。 例:出力としてjQuery CSSセレクタを使用してヘッダのテキストを正しく選択できません

<a> 
    <h1>TEXT I WANT TO CAPTURE1</h1> 
</a> 

、私が期待する:ここで

TEXT: TEXT I WANT TO CAPTURE1 

は私のコードです:

$(function(){ 
    var text = []; 
    var h12 = []; 
    h12 = $("a > :header"); 
    for(j in h12){ 
     text[j] = $(h12[j]).text(); 
     $('body').append("<b>TEXT:</b> "+ text[j]); 
    }); 

コードは、このタスクを達成するため、問題は彼がにISNということですそのような構造からテキストをキャプチャすることはできません:

<div> 
     <div> 
      <div> 
       <a> 
        <h1>TESTE EXTREMO1</h1> 
       </a> 
      </div> 

     </div> 
    </div> 

誰もこの問題を解決し、このコンテキストでh1要素のテキストを "a"の内部に入れる方法を知っていますか?問題は可能性があります間違ったCSSの選択に関連しているが、私は間違って何を正確に把握することはできません!ありがとう。

+2

'for..in'ループやループが閉じられていないなどの構文エラーを修正した場合、正常に動作するはずです – adeneo

+0

**セレクタ**には何も問題ありません。 https://jsfiddle.net/d2tLm0w1/それは次のうちの1つです:あなたのdodgy jsコード(.each()for..in)を使用しない)2)HTMLはここに表示されていない3)セレクタはここに示されていない –

答えて

2

ここにはいくつかの構文上および構造上のエラーがあります。この全体の事はに短縮することができます。

$(function() { // on DOM-ready 
 
    $("a > :header").each(function() { // for each header that's a direct child of an anchor 
 
     $('body').append("<b>TEXT:</b> " + $(this).text()); // append its text to the body 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div> 
 
    <div> 
 
     <a> 
 
     <h1>TESTE EXTREMO1</h1> 
 
     </a> 
 
    </div> 
 
    </div> 
 
</div>

いない属性を持つ<a>要素を持つように注意してください。ブラウザーは少なくともhref属性を持たないアンカーのように扱わない傾向があります。

0

あなたはforループを閉じませんでした。また、配列に追加するには.pushを使用します。

$(function(){ 
    var text = []; 
    var h12 = []; 
    h12.push($("a > :header")); 
    for(j in h12){ 
     text[j] = $(h12[j]).text(); 
     $('body').append("<b>TEXT:</b> "+ text[j]); 
     } 
    }); 

ここにはjsfiddleがあります。

+0

ここでは構文エラーを表示するためにここにとどめますが、@ Coryの答えはより良いです。 – Anthony

+1

ありがとうございます。実際に私はここに投稿する私のプロジェクトのオリジナルコードを修正し、括弧を閉じるのを忘れてしまった。とにかく、あなたの助けに感謝;)そしてもしあなたがTESTE EXTREMOが何を意味するのか疑問に思うなら、それはポルトガル語で書かれています。英語では:extreme test haha –

関連する問題