【问题标题】:simple javascript with document.getElementById to extract text from html带有 document.getElementById 的简单 javascript 从 html 中提取文本
【发布时间】:2018-06-15 03:01:53
【问题描述】:

我创建了一个 Safari 扩展,它是按钮、工具栏,我只是想做一个非常简单的事情,没什么特别的,我想点击这个按钮,警报只显示使用 document.getElementById 提取的那部分文本。警报返回 null。

function myFunction() {
    let myElement = document.getElementById("p-interaction-label");
    alert("The element from the paragraph is: " + myElement);
  }
<button onclick="myFunction()">ToolBar</button>

感谢您的帮助 :))))

【问题讨论】:

  • id为p-interaction-label的元素在哪里?
  • 这里有一些现代 JS 的需求:不要使用 alert(它会阻塞 JS 线程,并且只能在 2010 年之前编写的代码中使用),而是使用 console.log。另外,不要在 HTML 端使用古老的 onclick 属性,而在 JS 端使用 addEventListener
  • 我正在通过 Safari 扩展程序使用工具栏中的按钮,因为我需要该按钮。 id在这个页面,我随便选了一个页面测试脚本:en.wikipedia.org/wiki/Ciao
  • 我希望该按钮可以在当前页面上使用。

标签: javascript html dom web-scraping


【解决方案1】:

您将myElement 分配给一个元素,而不是它的值/内容。改变你的变量赋值如下:

如果p-interaction-label 不是输入字段,您可以像这样使用textContent

function myFunc(){
    let myElement = document.getElementById("p-interaction-label").textContent;
    console.log(myElement);
    alert("The element from the paragraph is: " + myElement);
}

jsFiddle: http://jsfiddle.net/AndrewL64/2vhy7beu/11/


如果p-interaction-label是一个输入字段,你可以像这样使用value

function myFunc(){
    let myElement = document.getElementById("p-interaction-label").value;
    console.log(myElement);
    alert("The element from the paragraph is: " + myElement);
}

jsFiddle: http://jsfiddle.net/AndrewL64/2vhy7beu/7/

【讨论】:

  • 我在 wikipedia 中为我的测试选择的代码如下:

    Interaction

    ,但如果有帮助,您可以选择另一个我明白。这些都不起作用:.textContent、.value、.innerHTML。
  • 我正在尝试通过 Safari 扩展使用工具栏中的按钮从该维基百科页面中提取“交互”一词,这可能是问题所在吗?我以为代码可以直接读取当前页面并查找该ID
  • 嗯。我认为您的脚本是在加载 html 之前加载的,因此该函数还找不到“p-interaction-label”。
  • 我在单击按钮时运行脚本,我认为我的脚本中缺少某些内容,因为它是 Safari 扩展程序。您在上面编写的代码不仅正确且有效,而且在控制台中使用,我想使用工具栏中的按钮需要更多的东西,只是我无法找到它,但如果我找到它,我会及时通知您.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 2012-12-13
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多