Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.08.2012, 08:55
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

узнать св-во элемента
<!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)
- почему-то выводится пустота
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2012, 09:09
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

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)
Ответить с цитированием
  #3 (permalink)  
Старый 07.08.2012, 09:19
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

<!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>

Так тоже пусто
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2012, 09:25
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

daima,
JavaScript css свойство считает по умолчанию - поэтому и пусто
Ответить с цитированием
  #5 (permalink)  
Старый 07.08.2012, 09:25
Аспирант
Отправить личное сообщение для skfyann Посмотреть профиль Найти все сообщения от skfyann
 
Регистрация: 27.12.2011
Сообщений: 90

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;
}


Вот тут подробнее.
Ответить с цитированием
  #6 (permalink)  
Старый 07.08.2012, 09:29
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

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>

Последний раз редактировалось lord2kim, 07.08.2012 в 09:40.
Ответить с цитированием
  #7 (permalink)  
Старый 07.08.2012, 11:27
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

Вот тут подробнее. - в ие 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 закрывается текст в нем менялся. Но чего-то не выходит
Ответить с цитированием
  #8 (permalink)  
Старый 07.08.2012, 12:01
Аспирант
Отправить личное сообщение для skfyann Посмотреть профиль Найти все сообщения от skfyann
 
Регистрация: 27.12.2011
Сообщений: 90

Тогда вы что-то совсем намудрили...
Вот так не проще?
<!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>
Ответить с цитированием
  #9 (permalink)  
Старый 07.08.2012, 13:42
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

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

Последний раз редактировалось daima, 07.08.2012 в 13:47.
Ответить с цитированием
  #10 (permalink)  
Старый 07.08.2012, 15:55
Аспирант
Отправить личное сообщение для skfyann Посмотреть профиль Найти все сообщения от skfyann
 
Регистрация: 27.12.2011
Сообщений: 90

Сообщение от daima Посмотреть сообщение
код не рабочий: Before сразу же заменяется на After наведении на аНаАаВаЕаДаИ.
Код рабочий, вы просто не умеете его использовать.
Давайте по шагам что произошло.

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие для каждого элемента. Узнать id каждого элемента LysoSutriN jQuery 4 05.01.2012 16:03
Как то можно узнать ID HTML элемента вызвавшего JavaScript функцию? Opusel Events/DOM/Window 1 18.12.2011 18:36
Можно ли средствами JS узнать высоту скрытого элемента? ацкий Общие вопросы Javascript 7 24.08.2011 19:07
Узнать CSS правило для элемента vinet Events/DOM/Window 4 10.12.2010 08:12
Как узнать id элемента? Вальдемар Общие вопросы Javascript 1 25.09.2009 13:31