2017-08-30 9 views
0

私は100のテーブルを持つページを見つけました:50のテーブルは100の幅で、50のテーブルは200の幅です。幅がいくつかの(200)ピクセルと同じ場合、すべての要素(テーブル)を非表示にするにはどうすればよいですか?

幅200のテーブルは私とは無関係で、if()ステートメントで非表示にしたいと思います。

問題は彼にはセレクタがなく、幅で時間を選択する必要があります。これは可能ですか?

私はこれを試してみましたが、うまくいきませんでした:

document.querySelectorAll('table').forEach((e)=> { 
    if (table.width === 300) { 
    e.style.visibility = 'hidden'; 
    } 
}); 

編集:を私はバニラ・ソリューションを望んで最も。

答えて

1

は、DOMがそれをアクセスもしようとする前に準備ができていることを確認してくださいまた、テーブル要素のoffsetWidthプロパティを使用します。

function removeTables() { 
    document.querySelectorAll('table').forEach((e)=> { 
     if (e.offsetWidth >= 200) { 
     e.style.display = "none"; 
     } 
    }); 
} 

window.onload = function() { 
removeTables() 
}; 
+0

まあ、ページには明らかにテーブル(テーブル、tbody、tdなど)が含まれていても、これは未定義を返します。 – sangoko

+0

それはwierdです、あなたが電子メールを記録するとき、コンソールは何を言っていますか? – TimCodes

+0

https://codepen.io/TimCodes/pen/YxdyYG?editors=1111 – TimCodes

0

スクリプトの下に試してみてください。ここでは、jquery each()関数を使用して、ページ内のすべてのテーブルを反復処理します。それが役に立てば幸い。

$(document).ready(function(){ 
    $('table').each(function(){ 
    if($(this).width()==125){ 
     $(this).hide(); 
    } 
    }); 
}); 

これを確認するには、をご確認ください。

+0

あなたはそれをバニラに翻訳できますか?私はjQueryを知らない。私はバニラの解決策を探している質問を更新します。ところで、私はdomContentLoadedが '$(document).ready'と違うことを理解しています。 – sangoko

+0

@sangoko sry男、私はバニラについて考えていない! –

関連する問題