当前位置: 首页 > news >正文

将对象或数组存在 dom元素的属性上,最后取不到完整数据,只取到 [{

目录

一、问题

 二、问题及解决方法

三、总结


一、问题

1.我需要在dom元素里面添加了一个属性test存一个对象数组temp,以便我下一次找到这个dom元素时可以直接拿到属性里面的数据来渲染页面。

2.dom 属性上存 对象和数组,必须先JSON.stringify(arr),转换成字符串才可以存储。

3.存储完了之后我就用JSON.parse( dom.getAttribute('属性名称'))来获取并解析我存的数据,但是吧,一直报错

VM360956:1 Uncaught SyntaxError: Expected property name or '}' in JSON at position 1
    at JSON.parse (<anonymous>)

大体意思就是不是JSON数据,不能解析!没办法打印了一下没有parse前的数据,竟然是这样的[{,但是在dom上看着也没有毛病呀,确实是存了呀,为什么呀,打印出来只剩下这个前面两个[{ 了呢?????? @--@

1)代码

    let temp = JSON.stringify([{ color: 'red' },{color:'green'}])options.content = `
<div><div id="${categoryKey}" class="feng-image-textMarker"  test="${temp}" ></div>
</div>`let markDom = new fengmap.FMDomMarker(options)console.log({ markDom })markDom.addTo(this.floor)setTimeout(()=>{let dom=document.getElementById('0');console.log("temp",dom.getAttribute('test'))console.log("获取存储的temp数据",JSON.parse(dom.getAttribute('test')))},3000)

 二、问题及解决方法

1.我还以为自己获取属性的 方式有问题,还试了一下jq的获取方法,还是有问题,取到的还是[{

    let dom=document.getElementById('0');console.log("temp",$(dom).attr('test'))

2.天哪,到底是怎么回事呢?不晓得呀!!!!!

   一段时间后,突然改了一下代码 把  test="${temp}"改成了  test='${temp}',竟然神奇的好了!!!!!!

   我的天哪,原来是因为单双引号,在字符串模板中存对象或者是数组变量 请使用 单引号呀。

3. 经过测试:普通的字符串使用 双引号是没有毛病的,存完之后可以正常获取到。

代码:

    let temp = JSON.stringify([{ color: 'red' },{color:'green'}])options.content = `
<div><div id="${categoryKey}" class="feng-image-textMarker"  test="${temp}" test2="lyl" ></div>
</div>`let markDom = new fengmap.FMDomMarker(options)console.log({ markDom })markDom.addTo(this.floor)setTimeout(()=>{let dom=document.getElementById('0');console.log("temp",dom.getAttribute('test2')) //lylconsole.log("temp",dom.getAttribute('test')) //[{console.log("获取存储的temp数据",JSON.parse(dom.getAttribute('test')))},3000)

三、总结

1.当dom中存储对象或数组,JSON.parse解析时报错或只能取到存储的部分数据 [{,[,{,需要检查一下你直接在dom中存储属性时  单双引号是否使用正确!一定要使用单引号呀

2,经测试,普通字符串单双引号都可以;JSON字符串必须要使用单引号,所以建议在字符串模板中尽量使用  单引号。

3.奇遇,解决问题的方法真的是不知道怎么来的,但是确实是解决了,真有意思,希望这样的智慧多一点,就不需要一天到晚 冥思苦想怎么解决问题了^-^

/*

希望对你有帮助!

如有错误,欢迎指正,非常感谢!

*/ 

http://www.lryc.cn/news/28313.html

相关文章:

  • Flask源码篇:Flask路由规则与请求匹配过程(超详细,易懂)
  • Jmeter接口测试教程之【参数化技巧总结】,总有一个是你不知道的
  • 缓存与数据库的双写一致性
  • 力扣-213打家劫舍II(dp)
  • 关于【网格结构】岛屿类问题的通用解法DFS(深度遍历)遍历框架+回溯+剪枝总结
  • 【LeetCode】982. 按位与为零的三元组
  • Linux内核源码进程原理分析
  • 电子技术——CMOS反相器
  • gazebo仿真轨迹规划+跟踪(不在move_base框架下)
  • C. Good Subarrays(前缀和)
  • 关于Facebook Messenger CRM,这里有你想要知道的一切
  • ChIP-seq 分析:数据与Peak 基因注释(10)
  • 《C++ Primer Plus》第18章:探讨 C++ 新标准(8)
  • YOLO-V5 系列算法和代码解析(八)—— 模型移植
  • js实现复制拷贝的兼容方法
  • 学习 Python 之 Pygame 开发魂斗罗(八)
  • Lesson11---分类问题
  • Python基础学习12——异常
  • [日常练习]练习17:链表头插法、尾插法练习
  • 第十四届蓝桥杯模拟赛(第三期)试题与题解 C++
  • 关于 “宏“
  • 1.2 CSS标签选择器,类选择器
  • 【Linux】进程等待 | 详解 wait/waitpid 的 status 参数
  • OpenAI眼中的无线调优策略
  • DataX入门
  • 第二章SpringBoot基础学习
  • B - Build Roads (最小生成树 + 打表)
  • k8s管理工具
  • Cannot start compiler The output path is not specified for module mystatic(已解决)
  • python入门应该怎么学习