오늘도 자바스크립트 작업중 어김없이 오류가 발생하였습니다.
Uncaught SyntaxError: missing ) after argument list
우선적으론 Uncaught SyntaxError: missing ) after argument list라는 오류가 발생했습니다.
자바스크립트에서 발생한 오류로 onclick에서 String 파라미터를 넘겨야하는데 못넘겨서 발생한 오류입니다.
아래 코드로 설명하겠습니다.
저의 경우를 보면 onclick 안에 adresMove란 함수가 있고 안에 String형태의 파라미터가 있지만
따움표로 감싸주지 않아 발생한 에러입니다.
1
|
content += '<a herf="javascript:void(0);" onclick="adresMove('+ value.indv_lnm_adres + ',' + key + ');">';
|
cs |
그래서 아래와 같이 따움표로 감싸주었지만 다시 에러가 발생합니다.
Uncaught SyntaxError: Unexpected identifier
얘기치 않은 식별자라 하네요...
이유는 content를 따움표로 구분지었는데 또 따움표를 붙이니 자체적으로 구별하기가 어려워 난 에러입니다.
함수에 String 파라미터를 보내기 위해서는 따움표를 구분할 무언가를 같이 입력이 필요 합니다.
1
|
content += '<a herf="javascript:void(0);" onclick="adresMove(''+ value.indv_lnm_adres + '','' + key + '');">';
|
cs |
해결방법입니다.
따움표를 시작하는 부분과 끝나는 부분에서 \, 즉 역슬래시를 붙여주면 따움표로 인식하여 정상적으로 작동이 됩니다.
즉, 시작부분은 \' 끝나는 부분은 \' 똑같은 방법으로 처리해주시면 됩니다!
EX) content += '<a herf="javascript:void(0);" onclick="adresMove(\' '+ value.indv_lnm_adres + ' \ ', \' ' + key + ' \ ' );">';
1
|
content += '<a herf="javascript:void(0);" onclick="adresMove(\''+ value.indv_lnm_adres + '\',\'' + key + '\');">';
|
cs |
해결방법은 의외로 간단하지만 모르면 해맬 수도 있는 부분이네요~
또한 파라미터를 배열형태로 넘기는 방법입니다.
<a href=\'javascript:void(0);\' onclick=\'return chartStart(\" '+dataArr+' \" ); return false;\'></a>
위 상태에서 함수에 파라미터를 배열 형태로 그냥 넘겨 버리면
object 형태이기 때문에 다음 함수에서 로그를 찍던, JSON.stringify로 찍던
[object Object],[object Object] 로 찍히게 됩니다.
<a href=\'javascript:void(0);\' onclick=\'return chartStart(\ '+JSON.stringify(dataArr)+'\); return false;\'></a>
이럴땐 JSON.stringify()함수를 사용하여 JSON 문자열로 변환하여 파라미터로 넘겨주고,
문자열이 아닌 배열형태이기에 dataArr를 감싸고 있던 양쪽 따움표 ") 를 제거해주면
정상적으로 출력하는 것을 볼 수 있습니다.
물론 여기서도 JSON.stringify() 함수를 사용하여야 출력이 가능합니다.
댓글