【问题标题】:Javascript parse innerhtmlJavascript解析innerhtml
【发布时间】:2012-05-10 17:11:35
【问题描述】:

我有一个 HTML 页面,其中包含用逗号分隔的数据,每一行都以 (br /) 标记结尾。在 Javascript 中,我可以通过询问包含数据的元素的 innerHTML 来从 DOM 中获取此信息。

我的问题是如何解析 innerHTML 以从逗号之间获取数据并在遇到 (br /) 标记时从下一行开始?

您可能可以忽略其余部分,因为这是我上面的问题。

当我解析每一行时,我将启动一个新对象并将数据放入其中。我只是不确定如何处理 innerHTML!

我确实通过我找到的 CSVtoarray 函数放置了数据,但最终得到了一个包含一个大数组的数组,而不是每一行的数组数组。我可以通过这个数组从数据中创建对象,但是当我可以将数据直接解析为对象时,将 innerHTML 转换为单个数组似乎是不必要的步骤。

数据通过 AJAX 放在那里。我可以更改数据输入的格式。正如我所说,我在行尾用逗号和 (br /) 标记分隔数据。不知道是不是傻。

【问题讨论】:

  • 从你的服务器获取一个 JSON 对象。
  • @josh3736 这是一个非常干净的解决方案。感谢您阅读并看穿我的愚蠢。
  • 很高兴我能帮上忙——你应该在我的答案旁边click the check,这样每个人都知道你的问题已经解决了。

标签: javascript parsing innerhtml


【解决方案1】:

那么,您想对一个用<br /> 而不是\n 表示换行符的文件进行csv 解析?只需在 CSV-Parser 中使用该分隔符即可。简单版:

text.split("<br />".map(function(line){ return line.split(","); })

你也可以用正则表达式分割,比如

text.split(/\s*<br ?\/>\s*/)...

如果您真的在 DOM 中保留 CSV 数据,您可以删除所有 br 元素并将剩余的(文本)节点用作行数组。

【讨论】:

    【解决方案2】:

    您提到您可以控制通过 AJAX 获取的数据,您说得对,您当前的方法不是最好的主意。首先,你永远不应该尝试自己解析 HTML,即使你认为它“简单”——不同的浏览器会给你不同的innerHTML 以获得完全相同的内容。相反,请使用 DOM 来查找您要查找的信息。

    也就是说,这里的正确做法只是从服务器返回一个JSON 对象;然后,您将可以直接访问您的数据。几乎每一种服务器端语言都有某种输出 JSON 的工具,JavaScript 可以原生解析 JSON 字符串1JSON.parse()

    从服务器返回:

    {items: [
        { id: 0, name: '...' },
        { id: 1, name: '...' },
        ...
    ]}
    

    在客户端(假设为 jQuery),

    $.getJSON('/path-to-script/', function(d) {
        for (var i = 0; i < d.items.length; i++) {
            d.items[i].id;
        }
    });
    

    1 - 在现代浏览器中

    【讨论】:

    • 天才。感谢您提供此解决方案。
    【解决方案3】:

    如果您只想“从逗号之间取出数据”,您可以简单地这样做:

    yourElem.innerHTML = yourElem.innerHTML.split(",").join(""); 
    

    或者如果你只想要一个行数组:

    var lines = yourElem.innerHTML.split(",");
    

    这将返回一个包含 &lt;br&gt; 元素的行数组。不过,尚不清楚这是否是您想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2010-11-23
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多