0

为什么当我document.querySelector在动态 HTML 元素上使用时,它不会给我当前动态设置的数据?有没有办法获取当前数据?

例子:

如果我使用动态 html 转到此条带页面,并复制此元素的 JS 路径:

在此处输入图像描述 当我按粘贴并在控制台中运行代码时,我得到:

document.querySelector("#Full > table > tbody > tr > td:nth-child(1)")

returns-> <td>EUR</td>

但我希望得到:

returns-> <td>USD</td>

我注意到,无论我选择哪个国家查看设置动态 HTML 的支持结算货币,文档查询选择器总是返回结果,就好像该选项卡位于列表中的第一个国家一样,奥地利

4

2 回答 2

2

querySelector 返回它找到的第一个匹配项。如果您查看源代码,“动态”代码只是显示和隐藏一个部分。每个部分都有一个表格。

那么他们用什么来展示它selected,但它是在多个层面上完成的。要获得您看到的#Full 元素,它会是

document.querySelector(".tabs-tab.selected .tabs-tab.selected")

完整的选择器将是

document.querySelector('.tabs-tab.selected .tabs-tab.selected > table > tbody > tr > td:nth-child(1)')
于 2021-01-27T18:06:10.603 回答
0

如果您真的想从该路径获取数据,则可以使用以下代码。只需使用 chrome 或 firefox 的开发人员工具找到网站元素的完整 xpath。将 fullXpath 替换为您的 Fullxpath。

注意:我注意到正常的 xpath 也不起作用,所以这就是为什么使用完整的 xpath 而不是 xpath。

 let fullXpath =  "/html/body/div[2]/div/div[2]/div[2]/div/div/div/div[2]/div/div[1]/article/section[2]/div/div/div[34]/div/div/div[1]/table/tbody/tr[1]/td[1]";
    document.evaluate(fullXpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerHTML;

这会给你想要的结果。

于 2021-01-27T18:30:58.943 回答