Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не могу нормально поменять css (https://javascript.ru/forum/misc/43933-ne-mogu-normalno-pomenyat-css.html)

Zemster 27.12.2013 05:06

не могу нормально поменять css
 
изначально opacity = 0.7; после выполнения функции должно быть 1.0, но становится 0.3


function opp() 
   {
   er=document.getElementById('bn').style.opacity;
   er=er+0.3;
   document.getElementById('bn').style.opacity=er;
   setTimeout("opp()", 200);
   
   }

Zemster 27.12.2013 05:21

вот код полностью

<!DOCTYPE HTML >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id ="col">

<h1>заголовок</h1>
</div>
<img id="bn" src="2.jpg">
 <form>
   <p><input type="button" id="Yo" value=" Нажми меня нежно " onClick="opp()" ></p>
  </form>
  <script>
 
 
  var er=0;
  
	
   function opp() 
   {
   er=document.getElementById('bn').style.opacity;
   er=er+0.3;
   document.getElementById('bn').style.opacity=er;
   setTimeout("opp()", 200);
   
   }
  
  </script>

</body>
</html>

Antonius 27.12.2013 05:25

style возвращает inline-стиль, если я ничего не перепутал. Если opacity задано не с помощью атрибута style='opacity: .7', а из внешней таблицы стилей, то в er у вас попадает пустая строка. Затем к ней прибавляется (сложением строк, обратите внимание) 0.3 и в результате, очевидно, получается 0.3.

Исправить это можо, например, так:

function opp() 
{
var elem = document.getElementById('bn');
var er=getComputedStyle(elem, '').opacity;
er = +er + 0.3; // приводим строку к числу и складываем
elem.style.opacity = er;
}

Zemster 27.12.2013 05:43

Спасибо за ответ, вроде разобрался


Часовой пояс GMT +3, время: 20:43.