こんにちは。javascriptのlengthでわからないことがあります。
cssのクラスをつけた数を取得したいのですが、HtmlCollectionのため、配列ではなく、取得できません。
しかし,for文の中では配列とみなされるようで、lengthが使えます。
js
1for (var i = 0; i < classes.length; i++) { 2console.log(classes.length);//3 3}
これはなぜでしょうか?
classesには、単なるブロックがついているだけです。
js
1// JavaScript Document 2 3(function(){ 4 var classes = document.getElementsByClassName('historyBox'); 5 6 var wh = window.innerHeight; 7 8 9 10 function fadeIn(){ 11 12 13 for (var i = 0; i < classes.length; i++) { 14 var thisBox = classes[i]; 15 var thisDt = thisBox.children[1].children[0]; 16 17 var thisSize = thisBox.getBoundingClientRect().top; 18 if(thisSize > 0 && thisSize <= wh/2){ 19 20 thisDt.classList.add("fadein_new"); 21 22 var furstDd = thisBox.children[1].children[1]; 23 var secondDd = thisBox.children[1].children[2]; 24 25 26 setTimeout 27 28 var timeDelay = function(){ 29 furstDd.classList.add("fadein_new"); 30 secondDd.classList.add("fadein_new"); 31 } 32 33 setTimeout (timeDelay,400); 34 console.log(1); 35 36 } 37 } 38 39 40 41 42 43 } 44 45 //fadeIn(); 46 47 window.onscroll = fadeIn; 48 49 function changeSize(){ 50 var wh = window.innerHeight; 51 //console.log(ww + wh); 52 } 53 54 window.onresize = changeSize; 55 56 57 58 59 60 61})();
html
1<div class="historyBox box1955"></div> 2
すみません。仕事なのでできるところだけしかかけないことを謝ります。
一応動きは再現できて、その間にあれ?となったところをお聞きしているので、
多分法的には問題ないはずですが・・・。
回答4件
あなたの回答
tips
プレビュー