simon_glynn@email.com (Simon) writes:
Yes, using eval for dynamic object referencing *is* a problem, so
don't do it! :)
[color=blue]
> Am using the following code.
>
> <script language="JavaScript1.2">[/color]
In HTML 4, the type attribute is required. The following is the correct,
sufficient and recommended script start tag:
<script type="text/javascript">
Are you aware of the differences between Javascript versions 1.2 and
1.3 and which browsers change behavior (to the deprecated 1.2
behavior) because of your language attribute?
I know the differences, but not which browsers honors the version
number in the language attribute and implements 1.2 behavior.
You most likely don't want to use Javascript 1.2.
[color=blue]
> function setquantity(productindex,productquantity)
> {
> //create the reference object
> irefname_none = eval("document." + productindex + "none");[/color]
irefnam_none = document[productindex+"none"];
No eval, no problem.
Are you sure the object you are looking for is a property of the
document object, and that it has a name like "1none"?
Your problem is probably that you use the dot-notation with a property
name that is not a legal identifier. I.e.,
document.1none
is illegal since "1none" is not a legal identifer name. You must use
document["1none"]
for that kind of property names.
You probably mean to use
irefname_none = document.getElementById(productindex+"_none"):
instead.
[color=blue]
> and set quantity is called as follows further on in the HTML
>
> <snip>
>
> <td><img style="filter:alpha(opacity=20);-moz-opacity:0.2"
> name="1_none" src="none.gif" onclick="setquantity('1','none')" /></td>[/color]
This call to setquantity would make
irefname_none = document["1none"]
If you want to refer to this image itself, a better line would be
irefname_none = document.images[productindex+"_none"];
Or better yet, just send the element itself as an argument:
onclick="setquantity(this,'none')"
Then you have the image element readily available as the first argument,
and you don't need to go through
[color=blue]
> when I run this, the javascript console shows me an error as follows
>
> Error Missing ; before statement
> Line 9
> document.1none[/color]
Yes, a property called "1none" is not accessible using the dot-notation,
you must use square brackets.
[color=blue]
> Any suggestions appreciated. Testing and developing this on Mozilla
> 1.2.1, Linux[/color]
Drop eval completely. Use names that start with a letter instead of a
number. Use W3C DOM functions or collections to access elements
(document.getElementById or document.images).
/L
--
Lasse Reichstein Nielsen -
lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'