Go Back   CodingForums.com > :: Client side development > JavaScript programming

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 06-07-2007, 02:09 PM   PM User | #1
lore
New Coder

 
Join Date: Apr 2007
Posts: 16
Thanks: 0
Thanked 0 Times in 0 Posts
lore is an unknown quantity at this point
problem finding new object when calling function in my Javascrip file

Hi,
I posted this request for help on the AJAX forum but now I discovered the problem does not have anything to do with AJAX. I re-post it here:

Hello,
I am not a Javascript expert and if possible I would like to have some help with this problem. I have the following simple HTML where I create a new MyForm object.

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html lang="en" dir="ltr" >

<head>
<script src="http://lxplus012.cern.ch:1972/temporary/WebLib.js" ></script>
<link type="text/css" href="http://lxplus012.cern.ch:1972/temporary/style.css" rel="stylesheet"  />
<meta http-equiv="pragma" content="no-cache"  />
</head>

<script type="text/javascript" >
var myform = new MyForm('myform');
</script>

<h1 style="font-family: arial" >Elements Status</h1>

<p id="formsParId" >
</p>

<body onload="printList()" >
</body>
</html>
Then I have my WebLib.js javascript where I have several functions: one of them is the printList() function called inthe HTML. The other is makeHttpRequest() which is called when i press a button on my web page. Here a snippet of my .js file:

Code:
 

function makeHttpRequest() 
{
  printList(); // I simplified this function (where AJAX is used) to only call printList()
  return;
}

////////////////////////////////
function MyForm(name){
  this.name=name;
 MyForm.list[name]=this
};
/////////////////////////////////////////////
  function printList(){
 	 alert("printList");
        for(var i in MyForm.list){
 	 alert("Found form i="+i);
        }
    }
My problem is that if I call printList() from my HTML using onload="printList()" then everything is fine and my MyForm.list is not 0 , i.e. I get to the line alert("Found form i="+i);

If I get rid of the call to printList() in HTML above and I call printList() inside the function makeHttpRequest(), then it does not find anithing in MyForm.list, i.e. I only get to the
first line alert("printList") in printList(); Does anybody know why? Is there a way to solve this keeping the declaration "var myform = new MyForm('myform');" in the HTML ?
Can anybody help please?

Thanks in advance!
Lore
lore is offline   Reply With Quote
Old 06-07-2007, 06:30 PM   PM User | #2
cyberlogi
New Coder

 
Join Date: Apr 2007
Location: Silicon Valley California
Posts: 71
Thanks: 0
Thanked 0 Times in 0 Posts
cyberlogi is an unknown quantity at this point
Your variable 'MyForm' is a Function not an Object. It looks like your 'MyForm' function is meant to create a scoped object, but you never set it to anything. You need to initialize your form with a method like:

Code:
var foo = new MyForm(name);
However, if you don't need all the power of a scoped object, but just need the HTMLFormElement Object, then I suggest you scrap the 'MyForm' function altogether.

First create a variable 'MyForm' in the global scope:

Code:
var MyForm = null;
Then in your onload event callback set MyForm equal to your HTMLFormElement Object with:

Code:
var myOnLoad() = function() {
MyForm = document.getElementById('MyFormId');
};
Now any function can use 'MyForm' and will find it has a value. If you don't already have, I suggest you get the 'FireBug' extension for FireFox, which allows you to step through your JavaScript code and see what values variables have (as well as a whole lot more).

Last edited by cyberlogi; 06-07-2007 at 06:30 PM.. Reason: mispelled words
cyberlogi is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
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

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 06:56 AM.


Advertisement
Log in to turn off these ads.