js拼接html时传递对象

记录:js拼接html时传递对象的一个坑

起因:在使用地图的popup时,动态拼接了一段html,如下

const row = {a:1}
popupHtml += `
      <div class="btns">
        <button οnclick="popupDetail(${row})">详情</button>
      </div>
      `

浏览器报错:

Uncaught SyntaxError: Unexpected identifier

点进索引看:

popupDetail([object Object])

这种错误一般是少了逗号或者分号,而我传递的对象变成[object Object],

于是尝试用JSON.stringify去转换

结果仍然报错 输入意外结束

Uncaught SyntaxError: Unexpected end of input

点击索引看:

只剩下 popupDetail({

打印出来我传递的值是

{“a”:1}

仔细看代码

onclick="popupDetail(${JSON.stringify(row)})"
// 假如把我传递的值放进去
onclick="popupDetail({"a":1})"

很明显,这个双引号的问题

那么解决办法就出来了,

1.传递值的时候双引号转成单引号

onclick="popupDetail(${JSON.stringify(row).replace(/"/g, "'")})"

2.把方法外面包的那层双引号改成单引号

onclick='popupDetail(${JSON.stringify(row)})'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值