Solved

Javascript visiblity

Posted on 2008-06-26
3
460 Views
Last Modified: 2008-07-16
I'm trying to write a simiple function that makes a div visible or invisible in Javascript,
Please show me whats wrong with this code
<head>
    <script>
        function showHide(elemShow)
        {
            
             if (document.getElementById(elemShow).style.visibility = 'visible'){
                        alert('hello again');
                        document.getElementById(elemShow).style.display = 'none';                   
                    }
             else if (document.getElementById(elemShow).style.display = 'none') {  
                        document.getElementById(elemShow).style.display = 'block';
                        document.getElementById(elemShow).style.visibility = 'visible';
                         alert('hello');
                              }
             return true;
             }
    </script>
</head>
<body>
    <div style="float:left;"><input type=radio name="address_type" value="1" checked onClick="showHide('box');"></div>
    <div style="float:left;">Postal Box</div>
      <div style="clear:both;"></div>

    <div id="box" style="display: none;">
        <table>
            <tr>
                <td>The Postal Box fields here</td>
            </tr>
        </table>
    </div>
</body>
0
Comment
Question by:healthmanagement
  • 2
3 Comments
 
LVL 41

Expert Comment

by:HonorGod
ID: 21874815
It helps if you simplify things by removing duplication.  For example:

A big problem is that in order to test for two string values being equal, you need to use ==, not the single = used for assignment
<script type='text/javascript'>
  function showHide( id ) {
    var ele = document.getElementById( id );
    var result = false;
    if ( ele ) {
      if ( ele.style.visibility == 'visible' ) {
        alert( 'hello again' );
        ele.style.visibility = 'hidden';
        result = true;
      } else if ( ele.style.display == 'none' ) {
        ele.style.display = 'block';
        ele.style.visibility = 'visible';
        alert( 'hello' );
        result = true;
      }
    }
    return result;
</script>

Open in new window

0
 
LVL 41

Expert Comment

by:HonorGod
ID: 21874830
oops, I forgot the closing '}' ... sorry
<script type='text/javascript'>
  function showHide( id ) {
    var ele = document.getElementById( id );
    var result = false;
    if ( ele ) {
      if ( ele.style.visibility == 'visible' ) {
        alert( 'hello again' );
        ele.style.visibility = 'hidden';
        result = true;
      } else if ( ele.style.display == 'none' ) {
        ele.style.display = 'block';
        ele.style.visibility = 'visible';
        alert( 'hello' );
        result = true;
      }
    }
    return result;
  }
</script>

Open in new window

0
 
LVL 3

Accepted Solution

by:
itbeme earned 125 total points
ID: 21904834
You got to much code there for that.

Here this guy will tell you 7 ways
http://www.dustindiaz.com/seven-togglers/

something like this is all you need
function toggle(obj) {
      var el = document.getElementById(obj);
      if ( el.style.display != 'none' ) {
            el.style.display = 'none';
      }
      else {
            el.style.display = '';
      }
}

also make sure you're using a javascript bugger.  You're going to have a lot of headaches if you're debugging javascript by watching for the little script error icon.  At least use FF's script debugger.
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Scroll through Images 2 183
Problem to run jar file 4 151
Why does this AJAX transaction not see the posted variables? 5 74
a context menu and disabling few items of it 27 127
If you are looking at this article, you have most likely been hit by some version of ransomware and are trying to find out if there is anything you can do, or what way you should react - READ ON!
This article explains the steps required to use the default Photos screensaver to display branding/corporate images

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question