Solved

javascript missing : after property id

Posted on 2009-05-11
11
1,119 Views
Last Modified: 2012-05-06
Hello,
I am trying to pass the string below as an argument to a javascript funtion generated when the user clicks on an icon.

The string I am trying to pass is:  {Mallard=3_Duckling,5_Juvenile,8_Adult}{Mallard=M,F}{Mallard=23_Ringtail/Redhead,24_Eclipse}

I am getting the error 'missing : after property id' and can't get my string to pass as it should.
Is this a problem with the curly brackets ? Is there any way of getting round it ?

any ideas ?

Thanks
// Workaround for IE bug

    if ((document.all) && (document.getElementById))

    {

        tinyPlusSubrowImage['onclick'] = new   Function('test(' + ageSexPhaseString+')');

    }

    else

    { // FireFox

        tinyPlusSubrowImage.setAttribute('onclick','test(' + ageSexPhaseString + ')');

    }

Open in new window

0
Comment
Question by:COMPSUPP
  • 6
  • 5
11 Comments
 
LVL 41

Expert Comment

by:HonorGod
ID: 24354372
in the THEN clause, you probably want to use something like:
tinyPlusSubrowImage['onclick'] = new function( test( ageSexPhaseString ) }

Open in new window

0
 

Author Comment

by:COMPSUPP
ID: 24354476
By the THEN clause, do you mean else ?

If I need to replace the curly brackets with something else, do I need slashes in the replace as they are special characters ?
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 24355053
No, I mean the then clause.


Currently, you have it looking like:

tinyPlusSubrowImage['onclick'] = new   Function('test(' + ageSexPhaseString+')');

Problems:
- Javascript is case sensitive, so "new Function" isn't correct, it should be function
- After you make that change, it would look like:
  ... = new function('test(' + ageSexPhaseString+')')

  Is it your intension to pass the string (something like this) to the new anonymous function?

  test( ageSexPhaseString )
    if ( expression )

    {

        // Then clause

    }

    else

    { 

       // Else clause

    }

Open in new window

0
 

Author Comment

by:COMPSUPP
ID: 24355265
Thanks for that - might help with IE - my expression is to see if the browser is IE or Firefox.

I still have a problem in the else clause (which it uses when the browser is FireFox) trying to pass the string to the new anon function. I think this problem may be that there are curly brackets and commas in the string I am passing. I don't know if I can use escape characters or something to somehow get around this.
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 24355393
Having "browser detect" code is rarely a good thing.

Generally, it is better to have "object detect" code.
For example:

http://www.quirksmode.org/js/detect.html
0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 

Author Comment

by:COMPSUPP
ID: 24355481
Yes, I thought object detect code was what I was using with:

if ((document.all) && (document.getElementById))
    {
    }else{
}
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 24356056
Yes, I just tend to jump on the phrase "browser detect". :-)  Sorry about that.
0
 

Author Comment

by:COMPSUPP
ID: 24356255
Right, I have got rid of the : error by removing the starting curly brackets and replacing the closing curly brackets with double colons like this:

Guillemot=5_Juvenile,6_Immature,8_Adult::Guillemot=M,F::Guillemot=21_Bridled,22_Unbridled::

I need something to distinguish between the sections in the string, so that's why I cant get rid of the curly brackets and not replace them at all.

I now get a different error : missing ) after argument list

Different, but no less annoying. Any ideas ? Could there be a problem with passing a String with commas in it ?

Thanks for any insight !
0
 

Author Comment

by:COMPSUPP
ID: 24356277
Experts Exchange: Should I repost my question with a new title as I have a different error now ? I might get more responses to a new question..
Thanks
0
 

Accepted Solution

by:
COMPSUPP earned 0 total points
ID: 24356419
Ah...through trial and error I have found this works for FireFox. :

tinyPlusSubrowImage.setAttribute('onclick','test(\'' + ageSexPhaseString +'\')');
0
 
LVL 41

Expert Comment

by:HonorGod
ID: 24356729
The important thing is getting it to work.

The next most important, at least in my opinion, is understanding it.

I'm glad that you got it resolved.

Thanks for sharing the answer
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Gulp not seeing Changes 4 36
ngStyle with an input variable doesn't work 14 30
tag title an image 13 22
bootstrap footer centering and columns alignement 3 20
"In order to have an organized way for empathy mapping, we rely on a psychological model and trying to model it in a simple way, so we will split the board to three section for each persona and a scenario and try to see what those personas would Do,…
This article discusses how to create an extensible mechanism for linked drop downs.
This tutorial walks through the best practices in adding a local business to Google Maps including how to properly search for duplicates, marker placement, and inputing business details. Login to your Google Account, then search for "Google Mapmaker…
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now