Javascript解析内部HTML
我有一个HTML页面,其中充满了用逗号分隔的数据,每一行都以(br/)标记结尾。在Javascript中,我可以通过请求包含数据的元素的innerHTML从DOM中获得这一点 我的问题是如何解析innerHTML,从逗号之间取出数据,并在下一行点击(br/)标记时开始? 你可以忽略其他的,因为这是我上面的问题 当我解析每一行时,我将启动一个新对象并将数据放入其中。我只是不知道如何处理innerHTML 我确实通过我找到的CSVtoarray函数将数据放在一起,但最终得到的是一个由一个大数组组成的数组,而不是每行的数组。我可以通过这个数组一路工作,从数据创建对象,但是当我可以直接将数据解析为对象时,将innerHTML转换为单个数组似乎是不必要的步骤Javascript解析内部HTML,javascript,parsing,innerhtml,Javascript,Parsing,Innerhtml,我有一个HTML页面,其中充满了用逗号分隔的数据,每一行都以(br/)标记结尾。在Javascript中,我可以通过请求包含数据的元素的innerHTML从DOM中获得这一点 我的问题是如何解析innerHTML,从逗号之间取出数据,并在下一行点击(br/)标记时开始? 你可以忽略其他的,因为这是我上面的问题 当我解析每一行时,我将启动一个新对象并将数据放入其中。我只是不知道如何处理innerHTML 我确实通过我找到的CSVtoarray函数将数据放在一起,但最终得到的是一个由一个大数组组成的
数据通过AJAX放在那里。我可以更改数据的格式。正如我所说,我在行的末尾用逗号和(br/)标记分隔数据。我不知道这是否愚蠢。因此,您想解析一个文件,其中新行用
表示,而不是\n
?只需在CSV解析器中使用该分隔符即可。简单版本:
text.split("<br />".map(function(line){ return line.split(","); })
text.split(“
”.map(函数(行){return line.split(“,”;})
也可以通过正则表达式进行拆分,如
text.split(/\s*<br ?\/>\s*/)...
text.split(/\s*
\s*/)。。。
如果您确实在DOM中拥有CSV数据,则可以删除所有br元素,并使用剩余的(文本)节点作为行数组。如果您只想“从逗号之间获取数据”,则只需执行此操作即可: 或者,如果您只需要一组行:
var lines = yourElem.innerHTML.split(",");
这将返回一个包含完整
元素的行数组。但不清楚这是否是您想要的。您提到您可以控制通过AJAX获取的数据,您是对的,您当前的方法不是最好的主意。首先,您不应该尝试自己解析HTML,即使您认为t的“简单”-不同的浏览器会为完全相同的内容提供不同的innerHTML
。相反,使用DOM查找您要查找的信息
也就是说,这里正确的方法只是从服务器返回一个对象;然后您就可以直接访问您的数据。几乎每种服务器端语言都有某种输出JSON的功能,JavaScript可以使用JSON.parse()
本地解析JSON字符串1
从服务器返回:
{items: [
{ id: 0, name: '...' },
{ id: 1, name: '...' },
...
]}
在客户机上(假设jQuery)
$.getJSON('/path to script/',函数(d){
对于(变量i=0;i
1-在现代浏览器中只需从服务器获取一个JSON对象。@josh3736这是一个非常干净的解决方案。感谢您通读并看穿了我的愚蠢。很高兴我能提供帮助——您应该在我的答案旁边,这样每个人都知道您的问题已经解决。Genius。感谢此解决方案。
{items: [
{ id: 0, name: '...' },
{ id: 1, name: '...' },
...
]}
$.getJSON('/path-to-script/', function(d) {
for (var i = 0; i < d.items.length; i++) {
d.items[i].id;
}
});