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字符串中的雙引號用轉義字符來代替,問題就解決了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章