Позиция Div / CSS не обновляется после манипуляции с JavaScript
-
27-10-2019 - |
Вопрос
Я хочу переместить див, который обычно плавает с правой стороны в абсолютное положение (определяется JS), а затем возвращается к его начальному положению.
Первая часть уже работает и полагается на установку «стиль». Теги для объекта .. что -то вроде
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;
}
Почему объект не движется после того, как его класс был установлен?
Обновление: ссылка
Соответствующими частями являются строки 270-297 (в основном 290-294) в REBUILDTABS () для первого хода, который работает и строки 160-183 в Minwidget () Извиняется за слегка грязный код :)
Решение
Поскольку встроенные свойства переопределяют свойства класса, вам нужно удалить встроенный.
mytarget.style.position="";
Тогда fixed
Положение, определенная в классе, будет работать.
Или, возможно, использовать:
delete mytarget.style.position;
Не уверен, что предпочтительнее.