function CheckavailOnload()
{
var elems = document.getElementsByClassName('box-collateral box-related');
var av = document.getElementsByClassName('availability in-stock');
var x;
for (var i = 0; i < elems.length; i++)
{
if (getComputedStyle(elems[i]).visibility == 'visible')
{
for (var j = 0; j < av.length; j++)
{
av[j].style.visibility = 'visible';
if(elems[i].offsetTop < 0)
{
var x = (elems[i].offsetHeight + (elems[i]).offsetTop).toString() + "px";
alert(x);
}
for(m = 0;m < av.length; m++)
{
av[m].style.Bottom = (-x);
return;
}
}
}
}
for (var k = 0; k < av.length; k++)
{
av[k].style.visibility = 'hidden';
}
var divs = document.getElementsByClassName('add-to-cart');
for(var l = 0; l < divs.length; l++)
{
divs[l].style.marginTop = (-500).toString() + "px";
divs[l].style.marginLeft = (-20).toString() + "px";
}
}
window.onload = CheckavailOnload;
这里我试图移动一个段落标签有baground图像取决于div offsetTop和偏移高度div也有bacground图像我正在移动para标签正好在div下面但添加offsetHeight和offsetTop即将到来NAN请任何人都可以帮助我
答案 0 :(得分:0)
您已在脚本开头声明var x;
。然后你要检查:
if(elems[i].offsetTop < 0) {
var x = (elems[i]...); // var is not recommended to be here, x has been already declared once
}
如果elems[i].offsetTop
恰好是>= 0
,则此行中x
将为undefined
:
av[m].style.Bottom = (-x); // Notice a typo here: should be av[m].style.bottom
最后一个表达式为您提供NaN
。为避免这种情况,您需要在脚本开头为x
分配默认值,或者在else
之后添加if
语句,其中为{{x
分配了一些数值1}}。
return
循环中的for...m
似乎会破坏您的代码,循环将永远不会完成作业,其余代码将永远不会执行。
使用(-500).toString() + "px";
感觉很复杂,为什么不使用"-500px";
?