【问题标题】:Extracting specific lines in a chunk of text which contains a specific word, javascript在包含特定单词的文本块中提取特定行,javascript
【发布时间】:2011-06-16 18:48:53
【问题描述】:

我目前有一个字符串,实际上是一个 html 源代码存储在其中。我现在要做的是读出我需要使用 javascript 的特定标签。任何人都可以帮我解决这个问题,我是编程新手,我不太确定如何去做。


有问题的代码:

if (request.readyState == 4) {
    var html_text = request.responseText;
    var parent = document.createElement('div');
    parent.innerHTML = html_code;
    var metas = parent.getElementsByTagName('meta');
    var meta;
    for (var i = 0; i < metas.length; i++) {
        meta = metas[i];
        alert(meta.property);
        alert(meta.content);
    }
}

元内容有效,但返回的元属性未定义。

【问题讨论】:

  • 欢迎来到 Stackoverflow 和一般的编程。碰巧你的第一个问题has been asked before.
  • @Pointy 似乎有点苛刻,朋友。一个小标签...
  • 也许您应该将其转换为 HTML 树,然后使用 XPath 或 getElementsByTagName() 之类的东西?
  • @Matt Ball - 哦,我并不是说要苛刻或任何东西;事实上是真诚的。你打败了我的 DOM 答案,否则我会添加类似的东西:-)

标签: javascript html regex tags


【解决方案1】:

使用 DOM(文档对象模型)API。 Mozilla Dev Networknée Mozilla 开发中心)是一个很好的起点,是一个全方位的参考。


我现在要做的是读出我需要使用 javascript 的特定标签。

var text = /* whatever string that contains HTML */;

首先你需要解析字符串:

var parent = document.createElement('div');
parent.innerHTML = text;

然后您可以搜索您要查找的任何类型的元素。假设您正在寻找 &lt;table&gt; 元素。

var tables = parent.getElementsByTagName('table');

现在您可以对找到的每个元素执行任何操作:

var table;
for (var i=0, len=tables.length; i<len; i++)
{
    table = tables[i];
    // do something with the element
}

相关 API 文档

【讨论】:

  • @Matt Ball 谢谢。该解决方案有效。但是我正在尝试使用元标记并将其分配给元属性,但结果是未定义的。你知道为什么吗?我正在尝试通过该属性过滤掉我需要的内容。
  • 对不起,我不是通灵者。您必须提供一些代码。如果您遇到困难的特定代码,您几乎应该总是提供它。 SSCCEs 特别好。您可能应该再问一个问题,因为听起来实际问题与您上面提出的问题完全不同。
  • @Matt Ball if (request.readyState == 4) { var html_text = request.responseText; var parent = document.createElement('div'); parent.innerHTML = html_code; var metas = parent.getElementsByTagName('meta');变量元; for(var i=0; i
  • 请不要将代码转储到 cmets 中,无法读取。我已将代码编辑到您的问题中。 &lt;meta&gt; 元素的内容是什么,您希望 meta.property 包含什么? meta.property 不是 meta 元素的属性。 developer.mozilla.org/en/HTML/Element/meta
  • 我认为 meta.getAttribute('property') 会解决这个问题。无论如何,谢谢。
【解决方案2】:

XML 节点的属性不容易作为 DOM 对象属性使用。使用getAttribute

示例: http://jsfiddle.net/mendesjuan/6Pdmw/

var node = document.createElement('div');
node.innerHTML = "<meta property='prop1' content='cont1'>"+
                 "<meta property='prop2' content='cont2'>";
var metas = node.getElementsByTagName('meta');    
for (var i = 0; i < metas.length; i++) {
    var meta = metas[i];
    alert(meta.getAttribute("property"));
    alert(meta.getAttribute("content"));
}

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    相关资源
    最近更新 更多