3

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

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

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

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

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

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

4

3 回答 3

2

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

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

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

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

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

于 2012-05-10T17:17:34.083 回答
1

如果您只想“从逗号之间获取数据”,您可以简单地执行此操作:

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

或者,如果您只想要一组行:

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

<br>这将返回一个元素完整的行数组。不过,尚不清楚这是否是您想要的。

于 2012-05-10T17:22:43.177 回答
1

您提到您可以控制通过 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 - 在现代浏览器中

于 2012-05-10T17:28:09.673 回答