2016-03-22 10 views
0

バニラのjavascriptを使用してDOMトラバーサルのいくつかの重要な概念を学び、ちょうど一般的にスキップされたいくつかの基本的な概念を頭に入れようとしています。あまり理解していない。innerHTMLとvanillaを使用してノードのコンテンツを取得するJS

我々は、単純なHTMLページを取る場合:私は、次を使用して「こんにちは」の文字列を取得することができるはず思考の私の方法に

<html> 
<head> 
<title>hello</title> 
</head> 
</html> 

を:

window.document.head.title.innerHTML; 

しかし、これだけのリターン空の文字列なぜ誰かが説明できますか?説明:それはちょうどdocument.title

編集であるためである

+1

空文字列か 'undefined'ですか?なぜこのコード行でタイトルのコンテンツを取得すると思いますか? – Hacketo

+2

[JavaScriptでHTMLページのタイトルを取得するにはどうすればいいですか?](http://stackoverflow.com/questions/1057059/how-to-get-the-title-of-html-page-with-javascript) – Craicerjack

+0

'document.body.div.innerHTML'のようなことをすれば、複数のdivがあるときに、なぜこの全部が故障するのかが分かります。これは、必要なものを得るためにquerySelectorを使うべきであることを示しています。 – apokryfos

答えて

4

のテキストを取得するための正しい方法でありますCHあなたは以下の見つけることができます:

// search for the node 
document.querySelectorAll('title')[0].innerHTML 
// with html5 
document.querySelector('title').innerHTML 
// get by tag name 
document.getElementsByTagName('title')[0].innerHTML 
// or simply use this 
document.title 

あなたは、単に特定のタグの名前を書いて、あなたが望む結果を得ることを期待することはできません。ページ全体に1つの<title>タグしか存在しないという理由が、これが任意のノードにアクセスする実現可能な方法であるということを意味するものではありません。 document.head,document.body、およびdocument.titleなどの特殊なケースがありますが、それらは常に特定の要素を参照します。 DOM構造に必ずしも従うとは限りません。

+2

この「適用する」ものは何ですか?また、OPはなぜ彼のアプローチが空の文字列を返すのかを尋ねています。 – Bergi

+0

@Bergi、申し訳ありませんが、私の悪い。私はOPが後であるわけではないので、適用するものを削除しました。しかし、外出先でタイトルを変更したいときに便利です。 – AryKay

0

.titleは要素のタイトルを返すためである、あなたはそれを1つずつ与えたことはないので、それはそうdocument.head.titleが頭を返します空の文字列

<head title="head title"></head> 

あるhead要素の.title属性を返すようにしようとしている タイトル

+2

OPは彼のアプローチが空の文字列を返す理由を尋ねています。 – Bergi

+0

私は自分の答えを変えました。 –

1
document.querySelector('title').innerHTML 

これは、ページのタイトルにアクセスするいくつかの方法、WHIのいくつかがありますタイトル

+1

OPは彼のアプローチが空の文字列を返す理由を尋ねています。 – Bergi