亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

當條目排到第三行的時候,位置就出現了錯誤。下面是腳本,我寫的意思跟老師是一模一樣的,請大神指教

<script type="text/javascript">
?


? window.onload = function(){
? ? ?waterfall("box");
? }

? function waterfall(cls){
? ? ?//獲取每個條目
? ? ?var main = document.getElementById("main");
? ? ?var boxs = main.getElementsByClassName(cls);

? ? ?//計算頁面現實的列數
? ? ?var boxw = boxs[0].offsetWidth;
? ? ?var clos = Math.floor(document.documentElement.clientWidth/boxw);

? ? ?//設置main的寬度并居中
? ? ?main.style.cssText = "width:"+clos*boxw+"px;margin:0 auto;";
// ? ?console.log(boxw);
// ? ?console.log(clos);

? ? ?//將第一行元素高度存放于數組中
? ? ?//獲取最小高度,將第二航元素放置于此元素下
? ? ?var hArr = [];
? ? ?for(var i=0;i<boxs.length;i++){
? ? ? ? ? ?var height = boxs[i].offsetHeight;
? ? ? ? if(i<clos){
? ? ? ? ? ?hArr.push(height);
? ? ? ? }else{
? ? ? ? ? ?var minH = Math.min.apply(null,hArr);
? ? ? ? ? ?//遍歷數組獲取最小值索引,根據索引獲取最小高度元素,將原來索引中的值更新為現有值加上第
? ? ? ? ? ?var index = hArr.indexOf(minH);
? ? ? ? ? ?var obj = boxs[index];
? ? ? ? ? ?var left = obj.offsetLeft;
? ? ? ? ? ?var height1 = obj.offsetHeight;
? ? ? ? ? ?boxs[i].style.position="absolute";
? ? ? ? ? ?boxs[i].style.top=minH+"px";
? ? ? ? ? ?boxs[i].style.left=left+"px";
// ? ? ? ? ?boxs[i].style.cssText="position:absolute;top:"+minH+"px;left:"+left+"px;";
? ? ? ? ? ?hArr[index]+=height1;
? ? ? ? ? ?console.log(hArr[index]);
? ? ? ? }
? ? ?}

? ? ?console.log(hArr);
? }
</script>

正在回答

1 回答

??var obj = boxs[index];
? var left = obj.offsetLeft;
?var height1 = obj.offsetHeight;

hArr[index]+=height1;

貌似height1應該是

boxs[i].offsetHeight才對,

boxs[index].offsetHeight求的始終是第一行的索引為index的值

0 回復 有任何疑惑可以回復我~
#1

Edge2J 提問者

感謝,這個邏輯錯誤挺難查的。
2017-06-29 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

當條目排到第三行的時候,位置就出現了錯誤。下面是腳本,我寫的意思跟老師是一模一樣的,請大神指教

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號