开发者

How to Solve this "missing ) argument after list"?

This looks like a trivial question, but I am not sure how to deal with it. I have a DIV tag generated from javascript that goes like this:

$('#results')
 .append('<DIV id='
 + A.pid
 + ' onm开发者_开发技巧ouseover=function(){google.maps.event.trigger(marker, 'mouseover');};><H3>'
 + A.name
 + '</H3></DIV>');

Firebug is giving me an error "missing ) argument after list" as it does not recognise the ) immediately after 'mouseover'. How do I resolve this?

UPDATE:

I understand this is about escaping quote, just that doing \'mouseover\' produces a syntax error upon mouseover of the DIV and doing "mouseover" produces a blank document.

The syntax error reads: function(){google.maps.event.trigger(marker,


You need to escape quote if it's inside another quote:

  • var x = "I don't like you!";
  • var y = 'I don\'t like you!';
  • var z = 'echo "this text?";';

To implement it on your case, it would be like this:

'<DIV id='
 + A.pid
 + ' onmouseover=function(){google.maps.event.trigger(marker, \'mouseover\');};><H3>'
 + A.name
 + '</H3></DIV>'


You issue is in the use of the ' character to delimit both the function and the arguments in your call.

Either switch one set of ' out for " or use \' around the values of the argument

$('#results')
 .append('<DIV id='
 + A.pid
 + ' onmouseover=function(){google.maps.event.trigger(marker, "mouseover");};><H3>'
 + A.name
 + '</H3></DIV>');

//OR

$('#results')
 .append('<DIV id='
 + A.pid
 + ' onmouseover=function(){google.maps.event.trigger(marker, \'mouseover\');};><H3>'
 + A.name
 + '</H3></DIV>');


Try to generate the following string

'<DIV id=' + 
A.pid  + 
' onmouseover=\"google.maps.event.trigger(marker, \'mouseover\');\"> <H3>' + 
A.name + '</H3></DIV>'


You need to put " around the values of your html attributes. Otherwise the browser thinks the attribute ends at the next whitespace and that is exactly right after the (marker, part.

$('#results')
 .append('<DIV id="'
 + A.pid + '"'
 + ' onmouseover="function(){google.maps.event.trigger(marker, \'mouseover\');};"><H3>'
 + A.name
 + '</H3></DIV>');


Several things

  1. Stop putting HTML in all caps. This is the 21st century not the 20th century.
  2. You don't need an anonymous function for the onmouseover event.
  3. Wrap attribute values in either single or double quotes (I use double below).
  4. Read about JavaScript strings and quotes. Here is a tutorial.

Try this

    $('#results').append('<div id="' +
    A.pid +
    '" onmouseover="google.maps.event.trigger(marker, \'mouseover\');"><h3>' +
    A.name +
    '</h3></div>');
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜