2016-06-10 119 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>