Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   узнать св-во элемента (https://javascript.ru/forum/misc/30517-uznat-sv-vo-ehlementa.html)

daima 07.08.2012 08:55

узнать св-во элемента
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
<style>
#descr {visibility:hidden}
</style>
</head>
 
<body>
<div id="descr">asdasd</div>
<script>
alert(document.getElementById("descr").style.visibility)  
</script>
</body>
</html>



В css элемент имеет св-во #descr{visibility:hidden}


пытаюсь его узнать alert(document.getElementById("descr").style.visib ility)
- почему-то выводится пустота

Dim@ 07.08.2012 09:09

daima,
вроде это считается значение по умолчанию - css свойство
поэтому и выводится пустота - для наглядности:
<html>
<head>
<title> New Document </title>
<style>
#descr {visibility:hidden}
</style>
</head>
  
<body>
<div id="descr">asdasd</div>
<script>
document.getElementById("descr").style.visibility = "visible"; 
setTimeout(function(){document.getElementById("descr").style.visibility = "";}, 5000);
</script>
</body>
</html>

данный код устанавливает div-у значение visible, а через 5 секунд значение по умолчанию (значение указанное в css)

daima 07.08.2012 09:19

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
<style>
#descr {visibility:visible}
</style>
</head>
 
<body>
<div id="descr">asdasd</div>
<script>
alert(document.getElementById("descr").style.visibility)  
</script>
</body>
</html>

Так тоже пусто

Dim@ 07.08.2012 09:25

daima,
JavaScript css свойство считает по умолчанию - поэтому и пусто

skfyann 07.08.2012 09:25

function getStyle(el,styleProp){
	var x = document.getElementById(el);
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}


Вот тут подробнее.

lord2kim 07.08.2012 09:29

daima, в данном случае лучше использовать display
ну а если нужен все таки visibility, то, например, создать невидимое поле и записывать в его value значение установленного свойства visibility
а в принципе можно самим JS устанавливать нужные значения данного свойства, а потом спокойно считывать...
<html>
<head>
<title> New Document </title>
</head>
 
<body>
<div id="descr">asdasd</div>
<script>
document.getElementById("descr").style.visibility = "hidden";
alert(document.getElementById("descr").style.visibility);
</script>
</body>
</html>

daima 07.08.2012 11:27

Вот тут подробнее. - в ие 7-8 не работает

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
<html>  
<head>  
<title> New Document </title>  
<style>  
 
#descr {visibility:hidden;}
div:hover #descr{visibility:visible;}
 
</style>  
</head>  
 
<body>
<div onmouseout="info()">наведи
<div id="descr">asdasd</div>  
</div>
<script>  
function info(){
var el = document.getElementById("descr");
var style = el.currentStyle || window.getComputedStyle(el, null);
if(style.visibility=="hidden") el.innerHTML="пусто";
}
</script>  
</body>  
</html>

Собственно говоря что хочу - после того как мы убираем мышь с надписи наведи и окно descr закрывается текст в нем менялся. Но чего-то не выходит

skfyann 07.08.2012 12:01

Тогда вы что-то совсем намудрили...
Вот так не проще?
<!DOCTYPE HTML>  
<html>  
<head>  
<title> New Document </title>  
<style>  

#descr {visibility:hidden;}
 
</style>  
</head>  
 
<body>
<div onmouseout="mOut()" onmouseover="mOver()" style="background-color: red; width: 300px;">наведи
<div id="descr" style="background-color: blue; width: 200px;">Before</div>  
</div>
<script>  
function mOver(){
	var el = document.getElementById("descr");
	el.style.visibility = "visible";	
}

function mOut(){
	var el = document.getElementById("descr");
	el.style.visibility = "hidden";	
	el.innerHTML="After";
}
</script>  
</body>  
</html>

daima 07.08.2012 13:42

код не рабочий: Before сразу же заменяется на After наведении на аНаАаВаЕаДаИ. А должен только после того как мы убрали с аНаАаВаЕаДаИ мыш и descr закрылся. закрытие descr происходит только когда мыш уходит и с него и с аНаАаВаЕаДаИ. Если непонятно - выложу полный пример

skfyann 07.08.2012 15:55

Цитата:

Сообщение от daima (Сообщение 195292)
код не рабочий: Before сразу же заменяется на After наведении на аНаАаВаЕаДаИ.

Код рабочий, вы просто не умеете его использовать.
Давайте по шагам что произошло.

1. Вы навелись снизу накрасный див. В результате ...
2. Сработал onmouseover. Который
3. Сделал видимым синий див. Синий див оказался под мышью и...
4. Cработал onmouseout, который заменил значение на after.

Если бы вы попробовали сделать тоже самое с правого края( красный див больше синего на 100px), или сверху, то не говорили бы что код не работает. Закройте первый див до открытия второго и будет вам счастье.


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