javascript - 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);
});
解决方案
如果this.getAttribute("data-request")
正在返回"[object Object]"
,这是因为属性包含字符串"[object Object]"
,而不是因为它包含对象。最有可能的是,有人错误地做了this.setAttribute("data-request", someObject);
(或类似的)。属性只能存储字符串,所以这样做会自动将对象转换为字符串,这在大多数情况下会生成字符串"[object Object]"
,然后将该字符串存储在属性中。
这意味着您无法访问该对象,因为它从未存储过,而是只"[object Object]"
存储了字符串。(你得到的原因undefined
是console.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");
.
推荐阅读
- c - 组合十六进制字符串
- angular - 我是否使用 Angular 和 Jasmine 创建了适当的单元测试?
- reddit - 获取 Reddit 提交的正文?
- python - 服务器套接字编程找不到文件
- c - c中的分段错误核心转储错误
- windows - 无法从 Web Docker 容器连接到外部 PostgreSql 数据库
- asp.net-mvc - Bootstrap 4 中的控制对齐
- pyautogui - pyautogui 问题:locateCenterOnScreen 找不到正确的位置
- node.js - 为什么 Safari 不保存 Cookie 以响应存储?
- python - AI Platform Notebook Always Python 2