首页 > 解决方案 > 通过 JavaScript 控制台查找项目时遇到问题

问题描述

嗨,我是 javascript 的初学者,所以我遇到了麻烦。我正在尝试使用控制台获取页面元素。这是代码:

var ELEMENT = document.querySelector('div.flexCenter-3_1bcw.flex-1O1GKY.justifyCenter-3D2jYp.alignCenter-1dQNNs')

我想从元素中得到一个特定的东西:

ELEMENT.__reactProps$81cjqqgfk4j

简单的?不完全的。每次访问该页面时, .__reactProps$ 都会发生变化。有时会是 __reactProps$25jwbxmtle 或者有时会是 __reactProps$94maqnwnty(你明白了)。我可以在这里做什么?

当我执行 ELEMENT.attributes 时,会出现以下情况:

NamedNodeMap {0: class, class: class, length: 1}
    0: class
        ownerDocument: document
            .__reactEvents$81cjqqgfk4j

.__reactEvents 项始终以与 .__reactProps 项相同的内容结尾。有没有办法从属性中获取这个项目的名称(因为这对我来说已经足够了)

标签: javascriptconsole

解决方案


您可以使用Object.keys(ELEMENT)获取该元素的所有键,然后搜索所需的键。这将提取前缀,随机 ID:

var ELEMENT = document.querySelector('div.flexCenter-3_1bcw.flex-1O1GKY.justifyCenter-3D2jYp.alignCenter-1dQNNs');

let id = null;
for(let i = 0, keys = Object.keys(ELEMENT); i < keys.length; i++)
{
  if ((id = keys[i].match(/^__react[^$]*(\$.+)$/)))
  {
    id = id[1];
    break;
  }
}

console.log(id);

推荐阅读