我們在寫JS的時候,有時候報錯“Uncaught SyntaxError: missing ) after argument list”,有些童鞋就蒙蔽了,真凶在哪里呢?
字面翻譯過來的意思:語法錯誤: 參數列表后面缺少 )
這不就是缺少括號的意思么?然而只是真的缺少括號才會出現這樣的報錯么?不盡然。今天就在做jQuery基本事件練習的時候,被這個錯誤給誤導不淺。來來回回找了不下三四遍,沒有少括號啊?
直到……找到真正的元凶,才略微有點明白出現這樣錯誤其實不僅僅是因為“真正”的少寫了一個括號哦。
其實,如果你沒些漏掉括號,我們應該去找另外的原因,比如以下代碼:
$('.bannerList').append('<li><a target="_blank" href="' + bannerInfo.url + '" onclick="_gaq.push(['_trackEvent', 'app_ads_banner', 'banner', 'content_top',1,true]);"><img width="100%" alt="" src="' + bannerInfo.cover + '"></a></li>')
大家看看哪里出問題了,運行后也會報錯“Uncaught SyntaxError: missing ) after argument list”。
如果看不出來,我就解釋下原因,報錯的原因是在onclick里面的拼接參數的問題,直接寫是不行的,我們需要轉義下,如下操作:
onclick="_gaq.push([\'_trackEvent\', \'app_ads_banner\', \'banner\', \'content_top\',1,true]);"
我的是這樣的
//搜索用戶
function permissionSearch(){
var searchUser=$("#searchUser").val();
var appid=$("#appid").val();
var tdStr = '';
$.ajax({
type: "POST",
dataType: "json",
url:"/admin/app/searchUser",
data: { 'appid': appid, 'searchUser': searchUser },
success: function (result) {
$('#newUser').html(result.data.name);
if (result.state == 1) {
tdStr='<tr> <td class="center">新授權人</td><td class="center"><span id="newUser">'+ result.data.name +'( '+result.data.email+')' +'</span></td><td class="center"><button class="btn-sm table_close btn btn-danger" id="update_permission" data-dismiss="modal2" onclick="update_permission(\''+result.appid+'\',\''+result.data.email+'\',\''+result.data.name+'\',\''+result.data.mobile+'\')">授權</button></td> </tr>';
}else{
tdStr = '<tr> <td colspan="15" class="center">'+result.msg+'</td></tr>';
};
$('tbody.table_open_data').append(tdStr);
},
});
}
當然有時候還跟單引號和雙引號有關的,不能同時用單引號和雙引號,互相包含即可,這個很多童鞋會忽略問題,這里提示下,以后記住咯。