id/classを使わずにJavascriptでHTMLタグを読みたい。getElementByIdの機能について知っています。しかし、Jquery ではなく Javascript で id や class を使用せずに HTML タグを読み取る方法を知りたいです。
5 に答える
DOMAPI全体があなたのためにあります。
(element).getElementsByTagName
タグ名で要素を取得します。(element).getElementsByClassName
クラス名で要素を取得します。(element).querySelector[All]
CSSセレクターに基づいて1つまたは複数の要素を取得します。(element).children
要素の子要素を取得します。(element).childNodes
要素の子ノードを取得します。
リストはどんどん増えていきます。
document.getElementsByTagName(...)
たとえば、次のように使用できます。
var divs = document.getElementsByTagName('div');
divs; // => a list of "div" elements in the document.
を使用できますdocument.getElementsByTagName
。
var allDivsinDom = document.getElementsByTagName('div'); //Array of all divs
var allAnchorinDom = document.getElementsByTagName('a'); //Array of all a
....
このようにして、dom内のすべての要素にアクセスできます
document.body.childNodes
また、次のように、すべての子ノードを取得してchildNodes
DOMツリー全体を読み取ることもできます。
function readHTML(node) {
var i, child;
if (node.nodeType == 1) { // only tags
for (i = 0 ; i < node.childNodes.length ; ++i) {
child = node.childNodes[i];
// do something with node
window.console.info(child.tagName);
readHTML(child);
}
}
}
readHTML(document.body);
document.getElementsByTagName
以前に提案されただけでなく
ページ内の HTML タグはツリーを形成します。そのツリーのルートは「ドキュメント」と呼ばれるノードです。そのノードで getElementById などのメソッドを呼び出して、ツリー内のさらにノードを見つけることができますが、そうする必要はありません。
innerHTML プロパティにアクセスすることで、ドキュメント全体を含む任意のノードの生の HTML コンテンツを取得できます。(これはノード自体の HTML タグではなく、そのコンテンツの HTML タグを提供することに注意してください。したがって、そのタグも必要な場合は、ノードの親の innerHTML を取得する必要があります)
ドキュメント全体の生の HTML を読みたい場合は、document.documentElement.innerHTML にアクセスして、そこから得られるものを解析してみてください。