2017-10-17 12 views
0

私はノードを通して実行され、ウェブサイトのhtmlにアクセスするスクリプトに取り組んでいます。 他のすべては完全に機能していますが、

var j = 0; 
var headArr = []; 

$('tbody> tr > th').each(function(index) { 
    //^accesses elements from a loaded website^ 
    var head = $(this).text().trim(); 
    //^gets data from inside each 'th' tag^ 
    headArr[j]= head; 
    if(headArr[j]===''){ 
     headArr[j]=headArr[j-1]+'-'; 
    } 
     //^fills an array with this data, and copies last data if this 'th' empty^ 
    if($(this).hasClass('rowspan')){ 
     console.log('if fired'); 
     for(u=1; u<this.rowspan; u++){ 
      j++; 
      headArr[j]=headArr[j-1]+'-'; 
      console.log('loop fired'); 
     } 
    } 
    //^this block is the issue^ 
    j++; 
}); 

をブロックiがにconsole.log以外のすべてをコメントアウトしても、私はjQueryと.each機能するのではなく、より新しいだ発生しません「場合は」第二:と配列が実行されていない塗りつぶし私の理解:$(this)は現在の「th」タグでなければなりません。この場合、.hasClassは真を返します。 here's the html I'm scraping。 確かに 'if'ステートメント。

ご意見やご要望をいただければ幸いです。

-Aran

+0

コードのデバッグを試みてください。 –

+0

'rowspan'はclassNameではありません。それは '.attr()'です。 – PHPglue

+0

jQueryを使用すると、HTMLを貼り付けることができます。これにより、DOMトラバーサルを質問を見ている人が再現できるようになります。 –

答えて

3

"rowspan" HTMLのリンクされた画像の属性ではなく、classです。あなたは

は、あなたがこれを行うことができ
if ($(this).is("[rowspan]")) 
+0

ブロックを解雇した場合は、十分にあなたのおかげで、ありがとうございます。 –

0

ブール値を取得する属性セレクタと.is()を使用することができます。

if($(this).attr('rowspan')) 
0

.hasClassあなたは、rowspanのような属性をチェックするためのクラス名

をチェックするために使用されていますする必要があります

var attr = $(this).attr('rowspan'); 
if (typeof attr !== typeof undefined && attr !== false) { 

リファレンスドキュメント:https://css-tricks.com/snippets/jquery/make-an-jquery-hasattr/

希望すると、これが役に立ちます。

関連する問題