"Mark Hannon" <hannonart@optonline.net> skrev i melding
news:413de27d$0$26144$c397aba@news.newsgroups.ws.. .[color=blue]
>
> var initArray = [document.testForm.field1, document.testForm.field2,
> document.testForm.field3, document.testForm.field4];
>[/color]
document.testForm.field1 etc.. doesnt exist (undefined) at the time you
try to create your array.
You should therefore use body onload to call a function that initialize the
array.
- body onload fires when the page is finished loading
and your form exist on the document object:
You declare the array variable outside any function, in the global scope,
and initialize it inside the init function:
<script type = "text/javascript">
var initArray;
function init(){
initArray = [document.testForm.field1, document.testForm.field2,
document.testForm.field3, document.testForm.field4];
}
....rest of script...
</script>
<body onload="init();">
....rest of the page...
----------------------------------------------------[color=blue]
> function getValuesA(){
> var valuesOne = ["One", "Two", "Three", "Four"];
> for(var i = 0; i <= 4; i++ ){
> initArray[i].value = valuesOne[i];
> }
> }[/color]
The length of the array is 4 so your loops should be:
for(var i = 0; i < 4; i++ ){
}
or:
for(var i = 0; i <= 3; i++ ){
}
Oeyvind
--
http://home.online.no/~oeyvtoft/ToftWeb/
"Mark Hannon" <hannonart@optonline.net> skrev i melding
news:413de27d$0$26144$c397aba@news.newsgroups.ws.. .[color=blue]
> I am trying to initialize an array only once so it can be seen & used by
> any functions that need it. As I understand it, if a variable is
> declared by itself outside of any functions, its scope is global and any
> functions should be able to access it.
>
> I have been having trouble getting this to work. In the 1st of the 2
> examples below I initialize the Array "initArray" with 4 form text
> fields. When I try to use initArray[] inside either of the 2 functions,
> nothing happens. In the 2nd example, I initialize 2 different versions
> of the same array from inside the 2 functions and the code works fine.
> While the 2nd example works, it seems like a clumsy way to work.
>
> How would I declare & initialize an array only once so I can use it in
> any functions that need it?
>
> Thanks,
>
> Mark
>
> *****************Example 1 - Doesn't work*******************
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> "http://www.w3.org/TR/html4/loose.dtd">
> <html><head>
> <title>Initialize array</title>
> <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
> <script type="text/javascript">
>
> var initArray = [document.testForm.field1, document.testForm.field2,
> document.testForm.field3, document.testForm.field4];
>
> function getValuesA(){
> var valuesOne = ["One", "Two", "Three", "Four"];
> for(var i = 0; i <= 4; i++ ){
> initArray[i].value = valuesOne[i];
> }
> }
> function getValuesB(){
> var valuesTwo = ["Five", "Six", "Seven", "Eight"];
> for(var i = 0; i <= 4; i++ ){
> initArray[i].value = valuesTwo[i];
> }
> }
>
> </script>
> </head>
> <body>
>
> <form name="testForm" action="" method="POST" enctype="text/plain">
> <input name="field1" type="text" value="" size="5" maxlength="5"><br>
> <input name="field2" type="text" value="" size="5" maxlength="5"><br>
> <input name="field3" type="text" value="" size="5" maxlength="5"><br>
> <input name="field4" type="text" value="" size="5" maxlength="5"><br>
> <input name="myButton1" type="button" value="Test1"
> onClick="getValuesA()">
> <input name="myButton2" type="button" value="Test2"
> onClick="getValuesB()">
> </form>
>
> </body>
> </html>
>
> *********************Example 2 - Works!*********************
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> "http://www.w3.org/TR/html4/loose.dtd">
> <html><head>
> <title>Initialize array 2</title>
> <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
> <script type="text/javascript">
> function getValuesA(){
> var initArrayA = [document.testForm.field1, document.testForm.field2,
> document.testForm.field3, document.testForm.field4];
> var valuesOne = ["One", "Two", "Three", "Four"];
> for(var i = 0; i <= 4; i++ ){
> initArrayA[i].value = valuesOne[i];
> }
> }
> function getValuesB(){
> var initArrayB = [document.testForm.field1, document.testForm.field2,
> document.testForm.field3, document.testForm.field4];
> var valuesTwo = ["Five", "Six", "Seven", "Eight"];
> for(var i = 0; i <= 4; i++ ){
> initArrayB[i].value = valuesTwo[i];
> }
> }
>
> </script>
> </head>
> <body>
>
> <form name="testForm" action="" method="POST" enctype="text/plain">
> <input name="field1" type="text" value="" size="5" maxlength="5"><br>
> <input name="field2" type="text" value="" size="5" maxlength="5"><br>
> <input name="field3" type="text" value="" size="5" maxlength="5"><br>
> <input name="field4" type="text" value="" size="5" maxlength="5"><br>
> <input name="myButton1" type="button" value="Test1"
> onClick="getValuesA()">
> <input name="myButton2" type="button" value="Test2"
> onClick="getValuesB()">
> </form>
>
> </body>
> </html>
>
> *** Sent via Developersdex
http://www.developersdex.com ***
> Don't just participate in USENET...get rewarded for it![/color]