首页 > 解决方案 > this.getAttribute() 返回一个对象我如何访问该对象?

问题描述

this.getAttribute('data')返回一个对象,我怎样才能访问该对象来返回data.id

如果我这样做返回我[object Object]

$(".button").click(function(){
     var source = this.getAttribute('data-request');
     console.log(source);
     });

这种方式返回Undefined

 $(".button").click(function(){
         var result = this.getAttribute('data-request');
         console.log(result.id);
     });

标签: javascriptjquery

解决方案


如果this.getAttribute("data-request")正在返回"[object Object]",这是因为属性包含字符串"[object Object]",而不是因为它包含对象。最有可能的是,有人错误地做了this.setAttribute("data-request", someObject);(或类似的)。属性只能存储字符串,所以这样做会自动将对象转换为字符串,这在大多数情况下会生成字符串"[object Object]",然后将该字符串存储在属性中。

这意味着您无法访问该对象,因为它从未存储过,而是只"[object Object]"存储了字符串。(你得到的原因undefinedconsole.log(result.id)字符串没有id属性。)

由于您使用的是 jQuery,因此您可以访问 jQuery 的data函数,该函数可以在 DOM 元素上存储任意数据(可以是任何数据,而不仅仅是字符串)。因此,如果您确实需要存储附加到 DOM 元素的对象,请找到执行this.setAttribute("data-request", someObject);$(something).attr("data-request", someObject);替换它的代码,$(something).data("request", someObject);不会设置data-*属性,但会存储与元素关联的数据。然后你可以用const result = $(this).data("request");.


推荐阅读