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

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

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

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

Q&A

解決済

1回答

2687閲覧

なぜunderfinedになってしまうのか

aaaaaaaa

総合スコア501

JavaScript

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

0グッド

0クリップ

投稿2016/09/08 11:09

下記のソースは、for in 文で右辺値のオブジェクトのプロパティ名を左辺値に代入し、<li>のボーダー、パディングを合わせた幅を取得しているところです。

html

1<ulclass="cf"> 2<li></li><!-- 300px--> 3<li></li> 4<li></li> 5</ul>

javascript

1var slider_li = Array.prototype.slice.call(document.getElementsByTagName("li")); 2console.log("li",document.getElementsByTagName("li")); 3 4 5 6for(var li in slider_li) {//slider_li内のプロパティ名を代入している。 7 8 if(typeof(count) === "undefined") { 9 var count= 0; 10 } else if(count == 0) { 11 count += 1; 12 } else { 13 count += 1; 14 } 15 16 //スライダー(li)の大きさを取得。offsetWidthは、ボーダーとパディングを含んでいる。 17 var slider_li_size = slider_li[count].offsetWidth; 18 19 console.log("★count回数",count,"★大きさ",slider_li_size,"px★プロパティ名",li[count],"★slider_li",slider_li); 20} 21//★count回数 0 ★大きさ 300 px★プロパティ名 0 ★slider_li [object HTMLLIElement],[object HTMLLIElement],[object HTMLLIElement] 22//★count回数 1 ★大きさ 300 px★プロパティ名 undefined ★slider_li [object HTMLLIElement],[object HTMLLIElement],[object HTMLLIElement] 23//★count回数 2 ★大きさ 300 px★プロパティ名 undefined ★slider_li [object HTMLLIElement],[object HTMLLIElement],[object HTMLLIElement] 24

ここで質問です。プロパティ名li[count]の部分が、count回数0回目のときは0なのですが、それ以降だとundefinedと表示されてしまいます。
変数liは、配列slider_liが持っているプロパティ名を代入しています。想定では、0undefinedundefinedではなく012となっているはずでした。
document.getElementsByTagName("li")をコンソール画面で確認してみても 0 [object HTMLLIElement] {...}、 1 [object HTMLLIElement] {...}、 2 [object HTMLLIElement] {...}
となっており、ちゃんと連続する数字のプロパティ名に要素が入っていることが分かります。
なぜ、liは、012ではなく0undefinedundefinedとなってしまうのでしょうか。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ご提示のソースですと、プロパティーはliではないですか?

javascript

1 console.log("★count回数",count,"★大きさ",slider_li_size,"px★プロパティ名",li,"★slider_li",slider_li[li]); 2

投稿2016/09/08 11:33

yambejp

総合スコア114572

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問