質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1773閲覧

プロパティのプロパティとは

aaaaaaaa

総合スコア501

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/06/14 11:29

下記のソースは、liの親要素を取得している所です。

html

1<div id="a"> 2<ul id="m"> 3<li>aa</li> 4<li>aa</li> 5<li>aa</li> 6</ul> 7</div>

javascript

1var ul_id = document.getElementById("m"); 2var elem = ul_id.parentNode; 3console.log(elem.id);//a 4console.log(elem)//HTMLのソースが表示される。 5console.log(elem.length);//undifinedと表示される。

下記のソースは、liの数を取得している所です。

html

1<ul id="n"> 2<li>aa</li> 3<li>aa</li> 4<li>aa</li> 5</ul>

javascript

1var ul_id = document.getElementById("n"); 2//上記で取得した#ul_id内の要素の数をli_lengthに代入。.lengthを外すと#ul_idの子要素のみがリストアップされる。 3var li_length = ul_id.children.length; 4console.log("ul",ul_id,"liの数",li_length);//3

elemの前に付いている.idは、今回の場合、親要素のidを指し.lengthの場合は、liの数を指しています。ここで二つ疑問なのですが、ある子ノードの親ノードを指すelemプロパティと子要素のリストを返してくれるchildrenプロパティのあとにつく.idと.lengthは、何者ですか。
メソッドのあとにプロパティを指定できたり、jqueryオブジェクトを返すメソッドを繋げたりするメソッドチェーンは、知っておりますがプロパティのあとにプロパティが付く(elem.idやul_id.children.lengthなど)ものは知りませんでした。いったい何者なのでしょうか。

また、elemプロパティでも.lengthが使えるのかと思ったら使えませんでした。parentNodeでは、使えずchildrenでは使えるみたいですが、いったい何が使えて何が使えないのでしょうか。
○○は.lengthを使える、■■は、.lengthを使えない、などのように早見表のようなものは無いのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ブラウザ付属の開発者ツール

console.dir でオブジェクトが持つプロパティを得ることが可能です。
__proto__ を追えば、[[Prototype]] 上にあるプロパティも確認できます。

HTML

1<div id="a"> 2 <ul id="m"> 3 <li>aa</li> 4 <li>aa</li> 5 <li>aa</li> 6 </ul> 7</div> 8 9<script> 10'use strict'; 11console.dir(document.getElementById('a')); 12</script>

また、Google Chrome をお使いなら、ページ上の要素を右クリックして [検証] で DOM ツリー上の要素を選択し、[Properties] タブで各 Interface のプロパティを確認できます。
この機能は最近のブラウザなら大抵実装されていると思いますので試してみるといいと思います。

DOM

仕様としては下記2つの文書を読めば、大体は追えます。

div要素ノードなら「HTMLDivElement -> HTMLElement -> Element -> Node」のようにプロトタイプチェーンが働くので順番に追ってみてください。

Re: aaaaaaaa さん

投稿2016/06/14 12:07

think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

「elm」は「id="m"の要素の親要素」で、これはhtmlエレメントです。
プロパティの「id」はhtmlエレメントが持っているプロパティになります。
htmlエレメントの各プロパティについては以下を参照されるとよいと思います。

HTMLElement - Web API インターフェイス | MDN

「ul_id.children」で取得できるのは配列です。
配列オブジェクトには「length」というプロパティが定義されています。
配列のプロパティについてはこちらをどうぞ。

Array.prototype - JavaScript | MDN

投稿2016/06/14 11:49

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkturbo

2016/06/14 17:14

> children は HTMLCollection であって配列ではありません。 ぬおお、誤認識してましたorz
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問