【问题标题】:Div / CSS position not updating after javascript manipulationjavascript操作后div/css位置不更新
【发布时间】:2011-06-17 14:09:06
【问题描述】:

我想将一个通常在右侧浮动的div移动到一个绝对位置(由js确定),然后回到它的初始位置。

第一部分已经起作用,并且依赖于为对象设置“style.”标签..类似于

mytarget.style.position="absolute";
mytarget.style.top="50px";

要将其移回,我只想将标准类分配回元素,该元素还将包含定位信息。

奇怪的是,除了重新定位之外,一切都可以。 以下是相关代码:

var mytarget= document.getElementById(titlebarid);
var newclass=tabstyleclasses[titlebarid][ismaxedtab[titlebarid]];



mytarget.className= newclass ;

调试:

 alert ("wanting to set : " + newclass  )    ;

这会输出正确的值。 ("adfieldtitlesm")

alert ("my target is " +mytarget.id);

同样有效。

alert ("new class is " + mytarget.className );

也给出正确的值。 ("adfieldtitlesm")

alert ("new position is " + mytarget.style.position );

给出“绝对”(之前由 JS 在移动 mytarget 时设置),应该是“固定”

这是 CSS 类:

.adfieldtitlesm
 {
  position: fixed;
 top: 200px;
 left: 50px;
 
 font-size: 50px;
 background-color: #000000;
 color: #ffffff;
 
 }

为什么对象在类被设置后不会移动?

更新:链接

Main test page

与此相关的部分是第一步的rebuildtabs() 中的第270-297 行(主要是290-294),这是有效的 和 minwidget() 中的第 160-183 行 为稍微凌乱的代码道歉:)

【问题讨论】:

  • 您有我们可以查看的实时链接吗?调试单词非常困难。
  • 您是否使用其他position 值进行了调试,以查看问题是否出在fixed 值上,或者是否是其他问题?您是否尝试过手动设置 position 值而不是依赖类定义?
  • 是的,我确实尝试了其他位置值,但不幸的是无济于事.. 尝试将其上传到某个地方,可能需要 10 分钟 ..
  • 太棒了;在任何大多数其他网站上,您都需要等待 3 天才能有人回答,在 S.O.你道歉10分钟!我喜欢它。'

标签: javascript css positioning classname


【解决方案1】:

因为内联属性会覆盖类属性,所以您需要删除内联。

mytarget.style.position="";

那么类中定义的fixed位置就会起作用。

或者也许使用:

delete mytarget.style.position;

不确定哪个是首选。

【讨论】:

  • 没错。即使你重置了类,JS设置的内联样式仍然存在于DOM中。
  • 嗯,我尝试使用删除和空字符串解决方案;在分配新课程之前和之后尝试过(我想应该是之前)。现在警报(“新位置是” + mytarget.style.position);只是返回一个空字符串。当然位置会改变,但不是我想要的位置。它现在进入左上角
  • @C.J.帕克。您获得的定位将取决于您的 CSS。只要正确设置了 className,它就应该可以工作。确保您的 className 完全正确。 mytarget.style.position 唯一能给你的是 DOM 样式属性。它没有给出类本身的样式。为此,您需要检索其计算值。有一个 getStyle() 函数 on this page 可以用于此目的。
  • 好的,谢谢大家的回答。 Patrick DWs 代码实际上运行良好,我被愚弄了,因为我也忘记重置顶部和左侧属性。有没有办法清除所有内联标签?像 mytarget.style="" (这似乎不起作用)?
  • @C.J. Parker:如果你想删除 DOM 中设置的 所有 样式属性,试试这个:mytarget.setAttribute('style','');
猜你喜欢
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多