|
|
 |
 |
 |
 |
Javascript / Client Side Development
|
 |
 |
 |
 |
 |
 |
 |
 |
Help with "cannot assign string" error
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: d@tinaja.com Please visit my GURU's LAIR web site at http://www.tinaja.com
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); -- Ian Collins.
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. > 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:- <URL: http://jibbering.com/faq/#FAQ4_39 > > 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.
Ian Collins wrote: > 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]. -- 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: d@tinaja.com Please visit my GURU's LAIR web site at http://www.tinaja.com
Don Lancaster wrote: > Ian Collins wrote: >> 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) -- 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: d@tinaja.com Please visit my GURU's LAIR web site at http://www.tinaja.com
Don Lancaster wrote: > Don Lancaster wrote: >> Ian Collins wrote: >>> 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: d@tinaja.com Please visit my GURU's LAIR web site at http://www.tinaja.com
On Apr 29, 7:07 am, Don Lancaster <d@tinaja.com> wrote:
> 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);
|
 |
 |
 |
 |
|