Prototype.js:reset setStyle

时间:2010-02-25 03:01:08

标签: javascript prototypejs

有没有办法如何将样式重置回我的CSS中?

示例:

#foo {width: 50px; height: 50px; position: absolute; top: 150px; left: 250px;}


function moveFoo(newpostop, newposleft){
  $('foo').setStyle({top: newpostop+'px', left: newposleft+'px'});
}

现在,当我完成它之后,我想把foo移回原处。我知道它可以是硬编码的,但我需要用25个不同的div来做这个。

由于

4 个答案:

答案 0 :(得分:6)

使用null - 值设置样式可以解决prototype.js中未设置的问题

因此,您也可以使用$('foo').setStyle({top:null,left:null})还原您所做的更改。

答案 1 :(得分:5)

设置样式不会消除CSS类中所有元素。它只会覆盖已更改的那些。控件的实际样式是CSS样式和样式属性上的自定义样式的组合。要完全恢复CSS样式,只需删除样式属性即可。

$('#foo').removeAttr('style');

编辑:

显然上述方法不起作用。我在评论中被告知以下情况:

$('#foo').writeAttr('style', '');

答案 2 :(得分:1)

你可以使用普通的Javascript命令,对我来说工作正常:

$('foo').removeAttribute('style');  

将删除整个style =“”元素

答案 3 :(得分:0)

您可以删除某个属性,但我认为您无法将其还原。

如果您使用其他样式表来更改布局,则可以还原它。这样你就可以启用样式表来显示更改,并禁用它以撤消它。

最好的解决方案可能是将旧属性存储到数组中,然后使用该数组更改样式属性

这样的事情:

   var tempStyle = new Array();

    function moveFoo(newpostop, newposleft){
      tempStyle ["foo"] = new Array();
      tempStyle ["foo"]["top"] = newpostop;
      tempStyle ["foo"]["left"] = newposleft;

      $('foo').setStyle({top: newpostop+'px', left: newposleft+'px'});
    }

   function restoreFoo(){
      $('foo').setStyle({top: tempStyle ["foo"]["top"]+'px', left: tempStyle ["foo"]["left"]+'px'});
    }