1

In my aspx page, I have two radio buttons and a table.. if one of the radio buttons is checked it should make the table visible if the other one is checked invisible.. but this line is giving me a "JS Object Required". I am firing this from code behind .cs.. it fires fine but then i get that error.

 document.getElementById('tblnewpackinglogo').style.display = ''; 

See code below

JAVASCRIPT

<script language="javascript" type="text/javascript">
    function ShowImage() {
        var rdoImg = document.getElementById("<%=radImage.ClientID%>");
        if (rdoCurrImage2.checked == true) {
            document.getElementById('tblnewpackinglogo').style.display = 'none';
        }
        else {
            document.getElementById('tblnewpackinglogo').style.display = '';
        }
    }
</script>

TABLES

   <table id="tblImage" border="0" cellpadding="0" cellspacing="10" runat="server"
    visible="true">
         <tr>
             <td>
               <asp:Image ID="imgLogo" runat="server" />
             </td>
          <td>
    <div class="FieldStyle">
           Select an Option</div>
                     &nbsp;
         <asp:RadioButton ID="radImage" 
              Text="Keep Current Image" 
              runat="server" 
              GroupName="LogoImage"
              OnCheckedChanged="radImage_CheckedChanged" 
              Checked="True" />

         <asp:RadioButton ID="radNewImage" 
              Text="Upload New Image" runat="server" 
              GroupName="LogoImage"
              OnCheckedChanged="radNewImage_CheckedChanged" />
         </td>
      </tr>
     <tr>
         <td>
           &nbsp;
             </td>
           </tr>
     </table>
     <table id="tblnewpackinglogo" border="0" cellpadding="0" cellspacing="0" width="100%"
      runat="server" style="display:none;">
           <tr>
           <td style="height: 41px">
                  <div class="Style">
                        Select a Logo Image</div>
                <div class="ValueStyle">
                     <asp:FileUpload ID="UploadImage" 
                          runat="server" 
                          Width="300px" />
                             </div>
                            </td>
                        </tr>
                    </table>

2 Answers 2

1

It's probably that you need to get the name-mangled ClientID of the table:

document.getElementById('<%= tblnewpackinglogo.ClientID %>').style.display = '';

You're already doing it with the radio button above.

Also, if you're injecting the script from the code-behind file, then you'll still need to use the ClientID, as the JavaScript will run on client-side.

Sign up to request clarification or add additional context in comments.

1 Comment

Let me test, actually this might be the case, my tables have a runat=server
0

That error means that something of the form (null or undefined expression).someproperty is occurring. Naturally there is no someproperty on null/undefined. For the line:

document.getElementById('tblnewpackinglogo').style.display = ''; 

It is most likely that the problem is getElementById is returning undefined which would be caused if there was no element with the id tblnewpackinglogo at the time it was invoked.

Since there is a tblnewpackinglogo then -- unless FishBasketGordo's answer is correct -- I suspect the issue may be that ShowImage is invoked before the DOM has been loaded. Either that or there is another trivial error that does not align with the above post.

Inspect the actual HTML to see what is generated and use a tool like FireBug to try getElementById manually. Both FireBug and MS Script Debugger also offer more detailed debugging support to inspect the state at the time of the exception.

Happy coding.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.