JavaScript Development
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me
Go Back   Dev Shed ForumsWeb DesignJavaScript Development

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old May 5th, 2008, 02:58 PM
Tundra's Avatar
Tundra Tundra is offline
Contributing User
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Oct 2001
Location: Honolulu, Hawaii
Posts: 241 Tundra User rank is Corporal (100 - 500 Reputation Level)Tundra User rank is Corporal (100 - 500 Reputation Level)Tundra User rank is Corporal (100 - 500 Reputation Level)Tundra User rank is Corporal (100 - 500 Reputation Level) 
Time spent in forums: 1 Day 2 h 5 m 28 sec
Reputation Power: 9
Send a message via AIM to Tundra
MySpace
I Learned Something Interesting About visibility and javascript.

So I had this div.
Code:
<div id="someDiv">Test</div>


Which was being hidden via a style sheet
Code:
#someDiv { visibility:hidden; }


And I had this javascript which hid and displayed the div.
Code:
function invertVisibility ( htmlObject )
{
 if (htmlObject.style.visibility == 'hidden')
 {
  htmlObject.style.visibility = 'visible';
 }
 else if (htmlObject.style.visibility == 'visible')
 {
  htmlObject.style.visibility = 'hidden';
 }
}


Naturally, I needed something to activate this code, so I put a link on my page.
Code:
<a href="#" onclick="invertVisibility(document.getElementById('someDiv')); return false;">Show Div</a>
<div id="someDiv"><a href="#" onclick="invertVisibility(document.getElementById('someDiv'));return false;">Close This Div</div>


Now, upon loading the page, everything seemed to be in order. The div was hidden from view, but upon clicking on the the 'Show Div' the first time nothing happened; HOWEVER, clicking on the link a second time did, indeed show the div (and closing the div worked as well).

I discovered that the value of htmlObject.style.visibility was empty upon loading (despite the fact that the browser was hiding the div).

The only work around I have is to set the default visibility inline.

Code:
<a href="#" onclick="invertVisibility(document.getElementById('someDiv')); return false;">Show Div</a>
<div id="someDiv" style="visibility:hidden;"><a href="#" onclick="invertVisibility(document.getElementById('someDiv'));return false;">Close This Div</div>


This is a really lame work around.

Anyone know a better solution?

Reply With Quote
  #2  
Old May 5th, 2008, 03:42 PM
Kravvitz's Avatar
Kravvitz Kravvitz is offline
CSS & JS/DOM Adept
Click here for more information.
 
Join Date: Jul 2004
Location: USA
Posts: 15,149 Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level)Kravvitz User rank is General 5th Grade (Above 100000 Reputation Level) 
Time spent in forums: 3 Months 2 Weeks 2 Days 2 h 47 m 18 sec
Reputation Power: 1294
The style object/property of elements only reflects what is set in one of its properties or the style attribute of that element. To see the computed values of the properties, you need to use another method.
getStyle Function
http://www.quirksmode.org/dom/getstyles.html
http://www.robertnyman.com/2006/04/...-of-an-element/
http://www.codehouse.com/javascript..._current_style/
Comments on this post
Joseph Taylor agrees!
__________________
Spreading knowledge, one newbie at a time.

Learn CSS. | PHP includes | X/HTML Validator | CSS validator | Dynamic Site Solutions

IE7: the generation 7 browser new in a world of generation 8 browsers.
Design/program for Firefox (and/or Opera), apply fixes for IE, not the other way around.

Reply With Quote
  #3  
Old May 5th, 2008, 03:58 PM
coothead's Avatar
coothead coothead is offline
~ bald headed old fart ~
Dev Shed Newbie (0 - 499 posts)
 
Join Date: May 2005
Location: chertsey, a small town s.w. of london, england
Posts: 37 coothead User rank is Sergeant (500 - 2000 Reputation Level)coothead User rank is Sergeant (500 - 2000 Reputation Level)coothead User rank is Sergeant (500 - 2000 Reputation Level)coothead User rank is Sergeant (500 - 2000 Reputation Level)coothead User rank is Sergeant (500 - 2000 Reputation Level) 
Time spent in forums: 2 Days 5 h 36 m 35 sec
Reputation Power: 13
Hi there Tundra,
Quote:
Anyone know a better solution?

Well, you could try it like this...
Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<style type="text/css">
#mylink {
    color:#000;
 }
#someDiv {
    margin-top:10px; 
    visibility:hidden; 
 }
</style>

<script type="text/javascript">

   var obj;

window.onload=function() {
   obj=document.getElementById('someDiv')
   document.getElementById('mylink').onclick=function() {

   this.firstChild.nodeValue=(this.firstChild.nodeValue=='Hide Div')?'Show Div':'Hide Div';

   invertVisibility(obj);
   return false;
  }
 }

function invertVisibility(htmlObject){
   htmlObject.style.visibility=(htmlObject.style.visibility=='visible')?'hidden':'visible';
 }

</script>

</head>
<body>

<div>
<a id="mylink" href="#">Show Div</a>
</div>

<div id="someDiv">Test</div>

</body>
</html>

coothead

Last edited by Kravvitz : May 5th, 2008 at 04:00 PM. Reason: fixed bbcode

Reply With Quote
  #4  
Old May 6th, 2008, 06:09 AM
Joseph Taylor's Avatar
Joseph Taylor Joseph Taylor is offline
Text Ninja
Dev Shed Novice (500 - 999 posts)
 
Join Date: Jun 2005
Location: Vancouver, British Columbia, Canada
Posts: 596 Joseph Taylor User rank is First Lieutenant (10000 - 20000 Reputation Level)Joseph Taylor User rank is First Lieutenant (10000 - 20000 Reputation Level)Joseph Taylor User rank is First Lieutenant (10000 - 20000 Reputation Level)Joseph Taylor User rank is First Lieutenant (10000 - 20000 Reputation Level)Joseph Taylor User rank is First Lieutenant (10000 - 20000 Reputation Level)Joseph Taylor User rank is First Lieutenant (10000 - 20000 Reputation Level)Joseph Taylor User rank is First Lieutenant (10000 - 20000 Reputation Level)Joseph Taylor User rank is First Lieutenant (10000 - 20000 Reputation Level) 
Time spent in forums: 1 Week 4 Days 1 h 12 m 43 sec
Reputation Power: 107
Send a message via Skype to Joseph Taylor Send a message via XFire to Joseph Taylor
Quote:
Originally Posted by coothead
Well, you could try it like this...


Although that solves the problem for elements that are initially hidden, on elements that start out visible the problem remains.

The answer lies in Kravvitz's links.

Reply With Quote
Reply

Viewing: Dev Shed ForumsWeb DesignJavaScript Development > I Learned Something Interesting About visibility and javascript.


Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

 Free IT White Papers!
 
Accelerating Trading Partner Performance
One in five. That's how many partner transactions have at least one error. That is an amazing statistic, particularly given the extraordinary leaps in innovation across the global supply chain during the past two decades. Download this white paper to learn more.

 
Competing on Analytics
This Tech Analysis is designed to help identify characteristics shared by analytics competitors, and includes information about 32 organizations that have made a commitment to quantitative, fact-based analysis.

 
Cost Effective Scaling with Virtualization and Coyote Point Systems
An overview of the industry trend toward virtualization, how server consolidation has increased the importance of application uptime and the steps being taken to integrate load balancing technology with virtualized servers.

 
Five Checkpoints to Implementing IP Telephony
Implementation planning for IP PBX software and IP telephony has become vital as businesses replace discontinued legacy PBX phone systems. This informative whitepaper outlines five "checkpoints" for any implementation plan that will help make IP communications a successful proposition.

 
Hosted Email Security: Staying Ahead of New Threats
In the last two years, email has become a fierce battleground between the nefarious forces of spam and malware, and the heroes of messaging protection. The spam volumes increased alarmingly every month, bringing clever new forms of phishing and virus propagation attacks.

 

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 





© 2003-2008 by Developer Shed. All rights reserved. DS Cluster 1 hosted by Hostway