为什么浏览器在for循环中使用此函数崩溃?

时间:2018-02-26 10:42:33

标签: javascript

我尝试使用此(topMag)函数尝试了不同的变体。我想要的是,当我用getElem函数调用所有段落的示例时,我希望topMag计算从段落顶部到文档顶部的每个段落的高度。请有人向我解释一下,调用函数时这里发生了什么,以及如何解决它。



var elem, celElem, elemTop = [], elemMag = [], elemBot = [], elemCent = [], winTop, winMag, winBot, winCent, i;

function getElem(el, cEl, fn){
	if(el.length === undefined){
		el = [el];
		cEl = [cEl]
	};
	elem = el;
	celElem = cEl;
	  for (i = 0; i<elem.length; i++){	
	elemTop[i] = 0;
	elemMag[i] = elem[i].offsetHeight;
	elemBot[i] = elemTop[i]+elemMag[i];
	elemCent[i] = elemTop[i]+(elemMag[i]/2);
    topMag(elem[i], i);
	}
	winTop = window.pageYOffset;
	winMag = window.innerHeight;
	winBot = winTop+winMag;
	winCent = winTop+(winMag/2);

};
//the reason, why i need x: when the function is executed,
//i want to remain elem[i] to elem[i], not the body 
function topMag(x, i){
	elem[i] = x
	if (getComputedStyle(elem[i]).position === "fixed"){
		elemTop[i] = elem[i].offsetTop;
	}
	else{
		do{
			elemTop[i] += elem[i].offsetTop;
			elem[i] = elem[i].offsetParent;
		}
		while(elem[i] != "[object HTMLBodyElement]");
		elem[i] = x;
	}
};
&#13;
&#13;
&#13;

0 个答案:

没有答案