JS中onclick方法呼叫函式時如何傳遞物件引數
阿新 • • 發佈:2018-11-30
今天在拼接字串時加入了onclick事件出發的函式需要傳遞引數物件,結果遇到了一系列問題,特此記錄
我是想用ajax接收後臺傳遞的json資料,在成功的回撥函式裡拼接字串,然後替換文字。
第一次我是這樣拼接的
success : function(data){ console.log(data); str = ''; for(var i=0; i<data.length; i++){ str += '<li onclick = "informationPoint('+ data[i] +')">' + data[i].chgstationName + '</li>'; } $("#informationPoint").html(str); }
結果瀏覽器報錯如下:
出現這種情況我覺得是因為瀏覽器並不能成功解析我傳入的json物件,故我又將json物件轉換為了json字串進行拼接
success : function(data){ console.log(data); str = ''; for(var i=0; i<data.length; i++){ var info = JSON.stringify(data[i]); str += '<li onclick = "informationPoint('+info+')">' + data[i].chgstationName + '</li>'; } $("#informationPoint").html(str); }
結果瀏覽器又報如下錯誤:
但是onclick中的方法的引數取到了
所以這次出錯是因為我拼接字串用到的雙引號和json字串中的雙引號衝突了,修改後程式碼如下
success : function(data){ console.log(data); str = ''; for(var i=0; i<data.length; i++){ var info = JSON.stringify(data[i]); str += '<li onclick = "informationPoint('+info.replace(/"/g, '"')+')">' + data[i].chgstationName + '</li>'; } $("#informationPoint").html(str); }
將json字串中的雙引號用轉義字元來代替,問題就解決了