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字符串中的双引号用转义字符来代替,问题就解决了

  • 5
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值