js拼接html时传递对象

  • Post author:
  • Post category:其他


记录: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)})'



版权声明:本文为weixin_45372546原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。