1. 程式人生 > >JS中onclick方法呼叫函式時如何傳遞物件引數

JS中onclick方法呼叫函式時如何傳遞物件引數

今天在拼接字串時加入了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, '&quot;')+')">' + data[i].chgstationName + '</li>';
                     	}
                     	$("#informationPoint").html(str);
                     }

將json字串中的雙引號用轉義字元來代替,問題就解決了