Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

javascript missing : after property id

Posted on 2009-05-11
11
Medium Priority
?
1,145 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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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
 

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

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

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

Although a lot of people devote their energy toward marketing for specific industries, there are some basic principles that can be applied to any sector imaginable. We’ll look at four steps to take and examine how those steps were put into action fo…
When the s#!t hits the fan, you don’t have time to look up who’s on call, draft emails, call collaborators, or send text messages. An instant chat window is definitely the way to go, especially one like HipChat. HipChat is a true business app. An…
The viewer will learn how to count occurrences of each item in an array.
The viewer will get a basic understanding of what section 508 compliance can entail, learn about skip navigation links, alt text, transcripts, and font size controls.
Suggested Courses

972 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