Help with "cannot assign string" error

D

Don Lancaster

I need to progrmatically do this inside a loop

this.fh03.value = fixFloat (Harms[1], numPoints) ;

with the numbers changing per an index.

If I try

curHvals = "03" ; // (derived from index to provide leading zero)

( "this.fh" +curHvals + ".value" ) = fixFloat(Harms[ii],numPoints)


I get a [ Cannot assign string to 'string "this.fh03.value" ' error. ]

The right side of the equation works just fine elsewhere.
As does this.fh03.value elsewhere.

eval (...) does not work as it looks up the previous fh03 value rather
than replacing it with a new one.

What is the correct way to programatically loop calculated values with
fancy names?

Is there a command for string to named variable conversion?



--
Many thanks,

Don Lancaster voice phone: (928)428-4073
Synergetics 3860 West First Street Box 809 Thatcher, AZ 85552
rss: http://www.tinaja.com/whtnu.xml email: (e-mail address removed)

Please visit my GURU's LAIR web site at http://www.tinaja.com
 
I

Ian Collins

Don said:
I need to progrmatically do this inside a loop

this.fh03.value = fixFloat (Harms[1], numPoints) ;

with the numbers changing per an index.

Have you tried:

this[fh03][value] = fixFloat (Harms[1], numPoints);
 
R

Richard Cornford

Don said:
I need to progrmatically do this inside a loop

this.fh03.value = fixFloat (Harms[1], numPoints) ;

with the numbers changing per an index.

If I try

curHvals = "03" ; // (derived from index to provide leading zero)

( "this.fh" +curHvals + ".value" ) = fixFloat(Harms[ii],numPoints)


I get a [ Cannot assign string to 'string "this.fh03.value" ' error. ]

That seems a fairly clear and obvious error report.
The right side of the equation works just fine elsewhere.

No, there are no circumstances where you can assign a value to a string.
As does this.fh03.value elsewhere.

Your - this.fh03.value - is a property accessor and so can be the
destination for an assignment.
eval (...) does not work as it looks up the previous fh03
value rather than replacing it with a new one.

Eval would 'work' if you evaled the entire expression, but assigning to
the return value of a function call is not ever allowed (and not ever
meaningful).
What is the correct way to programatically loop calculated
values with fancy names?

Using bracket nation property accessors instead of dot notation property
accessors:-

Is there a command for string to named variable conversion?

Variable names are strings, but - this.fh03.value - is a property
accessor not a variable name.

Richard.
 
D

Don Lancaster

Ian said:
Don said:
I need to progrmatically do this inside a loop

this.fh03.value = fixFloat (Harms[1], numPoints) ;

with the numbers changing per an index.


Have you tried:

this[fh03][value] = fixFloat (Harms[1], numPoints);

Looks like an interesting approach.

Except it returns "undefined" for [value].


--
Many thanks,

Don Lancaster voice phone: (928)428-4073
Synergetics 3860 West First Street Box 809 Thatcher, AZ 85552
rss: http://www.tinaja.com/whtnu.xml email: (e-mail address removed)

Please visit my GURU's LAIR web site at http://www.tinaja.com
 
D

Don Lancaster

Don said:
Ian said:
Don said:
I need to progrmatically do this inside a loop

this.fh03.value = fixFloat (Harms[1], numPoints) ;

with the numbers changing per an index.


Have you tried:

this[fh03][value] = fixFloat (Harms[1], numPoints);

Looks like an interesting approach.

Except it returns "undefined" for [value].
But this works. Not sure why...

this [curHvals]["val" + "ue"] = fixFloat (Harms[ii], numPoints)

--
Many thanks,

Don Lancaster voice phone: (928)428-4073
Synergetics 3860 West First Street Box 809 Thatcher, AZ 85552
rss: http://www.tinaja.com/whtnu.xml email: (e-mail address removed)

Please visit my GURU's LAIR web site at http://www.tinaja.com
 
D

Don Lancaster

Don said:
Don said:
Ian said:
Don Lancaster wrote:

I need to progrmatically do this inside a loop

this.fh03.value = fixFloat (Harms[1], numPoints) ;

with the numbers changing per an index.



Have you tried:

this[fh03][value] = fixFloat (Harms[1], numPoints);

Looks like an interesting approach.

Except it returns "undefined" for [value].
But this works. Not sure why...

this [curHvals]["val" + "ue"] = fixFloat (Harms[ii], numPoints)

So does...

this [curHvals]["value"] = fixFloat (Harms[ii], numPoints)


Apparently quotes are required.


--
Many thanks,

Don Lancaster voice phone: (928)428-4073
Synergetics 3860 West First Street Box 809 Thatcher, AZ 85552
rss: http://www.tinaja.com/whtnu.xml email: (e-mail address removed)

Please visit my GURU's LAIR web site at http://www.tinaja.com
 
V

VK

I need to progrmatically do this inside a loop

this.fh03.value = fixFloat (Harms[1], numPoints) ;

with the numbers changing per an index.

If I try

curHvals = "03" ; // (derived from index to provide leading zero)

( "this.fh" +curHvals + ".value" ) = fixFloat(Harms[ii],numPoints)

I get a [ Cannot assign string to 'string "this.fh03.value" ' error. ]

The right side of the equation works just fine elsewhere.
As does this.fh03.value elsewhere.

eval (...) does not work as it looks up the previous fh03 value rather
than replacing it with a new one.

What is the correct way to programatically loop calculated values with
fancy names?

If I understood your problem properly then I would form the question
in some other way:

- How to access form controls using run-time generated control names
(so they cannot be hard coded as literals in my program).

- Use squared brackets notation with expression in it:
refFormElement.elements["fh"+curHvals].value =
fixFloat(Harms[ii],numPoints);
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,586
Members
45,088
Latest member
JeremyMedl

Latest Threads

Top