2016-06-10 124 views
0

我想按左鍵盤箭頭向左移動div。鍵盤事件:按動鍵向左移動邊距左邊

function arrowright (event){ 
    var vaiss= document.getElementById("vaisseau"); 
    var size= vaiss.style.marginLeft; 
    alert(size); //here I get empty message 
    if (event.which==39) 
     vaiss.style.marginLeft=size+"5px"; 
    alert (vaiss.style.marginLeft); // here I get 5px not previous left margin + 5px 
} 

這裏CSS:

#vaisseau{ 
    bottom:0; 
    position:absolute; 
    margin-left:300px; 
    display;block; 
} 

和HTML:

div id="vaisseau" class="elements"><img src="vaisseau.jpg"></div> 

我想的問題是,它不讀保證金左的實際值。

編輯:CSS樣式是一個外部文件

+0

是developper控制檯上顯示的錯誤:

document.getElementById("vaisseau").style.marginLeft只有當HTML代碼看起來像這樣的作品? (大多數瀏覽器上的[F12]鍵) –

+0

沒有錯誤,當按下按鍵時,margin-left等於5px,我會說我會等於:actual value + 5px – unfoudev

回答

1

找到答案在這裏:How to get margin value of a div in plain JavaScript?

T.J. Crowder說:

style對象的屬性只是直接應用於元素的樣式(例如,通過樣式屬性或代碼)。所以.style.marginTop只會有一些東西在裏面,如果你有一些專門分配給那個元素的東西(沒有通過樣式表分配等)。

爲了獲取對象的本次計算的風格,您使用的 currentStyle屬性(微軟)或getComputedStyle功能 (幾乎所有人)。

例子:

var p = document.getElementById("target"); 
var style = p.currentStyle || window.getComputedStyle(p); 

display("Current marginTop: " + style.marginTop); 

總結:<div id="vaisseau" class="elements" style="margin-left: 300px"></div>