2011-09-04 53 views
1

我有這個循環,產生許多元素具有不同的位置:用腳本改變各種元素style.left和top?

if ($row['Type'] == "house") { ?> 
    <div class="itemW" style="margin-left: <?=$row['X']?>px; margin-top: <?=$row['Y']?>px;"> 
    Item 
    </div> <? 
}  

我需要改變所有的div左邊的位置,我想這樣的:

var items = document.getElementsByClassName("itemW"); 
items[0].style.left = land.width()/items[0].style.left * 100; 

的問題是,沒有按items[0].style.left沒有得到第一個div的位置。此外,我不知道如何去做所有的div。

+0

btw'land.width()'可以用來獲取屏幕寬度和'land.height()'來獲得高度,因爲它是一個寬度爲100%,高度爲100%的div。 – lisovaccaro

+0

你可以使用jQuery嗎?這將使這種操作更容易。 – cdhowie

+0

是的,我可以。 ..... – lisovaccaro

回答

4

你可以得到一個特定的類名的所有元素與

document.getElementsByClassName("classname"); 

anything but IE < 9 at least:P

然後,它只是一個通過他們如循環的事情讓

var meh = document.getElementsByClassName("classname"); 
for (var i = 0; i < meh.length; i++) 
    meh[i].style.left = land.width()/items[0].style.left * 100 + "px"; // "px" is very important. 
                     // also this will only work 
                     // if you have first set the 
                     // element's style attribute. 
+0

如何在選擇它們後修改所有樣式?如果你告訴我如何給他們一個100px的左邊位置,我可以找出其餘的。 – lisovaccaro

+0

@ Liso22看到我的編輯。請確保將元素的樣式設置爲'style =「left:0px; top:0px;」'等等 –

+1

+1對於:「px」非常重要** AND **也只有在* *首先設置元素的樣式屬性**。 – Orion

0

試試這個與jQuery:

$('.itemW').each(function() { 
    var item = $(this); 
    var pos = item.position(); 

    item.css('left', (item.width()/pos.left * 100) + 'px'); 
    item.css('top', (item.height()/pos.top * 100) + 'px'); 
});