Javascript解析innerhtml

时间:2012-05-10 17:11:35

标签: javascript parsing innerhtml

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:2)

那么,你想用csv解析用<br />而不是\n表示换行符的文件吗?然后在CSV-Parser中使用该分隔符。简单版本:

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

您也可以通过正则表达式进行拆分,例如

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

如果你真的喜欢DOM中的CSV数据,你可以删除所有的br元素,并使用剩余的(文本)节点作为行数组。

答案 1 :(得分:1)

如果你只想“从逗号之间获取数据”,你可以这样做:

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

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

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

这将返回一行<br>元素完整的行。不过,目前尚不清楚这是不是你想要的。

答案 2 :(得分:1)

你提到你可以控制你通过AJAX获得的数据,而你现在的方法并不是最好的选择。首先,你不应该试图自己解析HTML,即使你认为它是“简单的” - 不同的浏览器会为完全相同的内容提供不同的innerHTML。相反,使用DOM查找您正在寻找的信息。

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

从服务器返回:

{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 - 在现代浏览器中