的JavaScript/DOM,解析键/值字符串
问题描述:
我发送一个字符串从服务器到Firefox浏览器在下面的格式:的JavaScript/DOM,解析键/值字符串
"KEY:a1 VAL:123.45"
而这个字符串可以包含很多这样的记录。
这是我写的代码:
var e;
var reply = request.responseText;
var txt = "", tab, key = "", val = "";
var x = reply.getElementsByTagName("KEY:");
for(i = 0; i < x.length; i++)
{
txt = x[i].childNodes[0].nodeValue; // "KEY:%c%c VAL:%.2F"
tab = txt.split(":");
key = "table_" + tab[1].substring(0,1);
val = tab[2];
e = document.getElementById(key);
e.innerHTML = val;
e.style.display = "block";
}
val
显示"KEY:a1 VAL:123.45"
,而不是在预期"123.45"
(当然还有key
变量也是错误的,不匹配的表格单元格,刚采摘的第一个桌子)。
我甚至不知道如何显示key
和val
值(document.write()和alert()什么也不做,我也没有看到如何在Firefox中跟踪这段代码)。
欢迎任何想法,提示,更正或代码示例,但请不要推荐使用任何库,我想用少量代码来完成。
编辑:从两个评论,我明白,有两种不同的方式来进行:无论是使用DOM对象和HTML标签,或使用'字符串'。我宁愿继续使用上面的格式,所以请引导我使用'字符串'解决方案。谢谢!
答
您可以使用一个简单的正则表达式来提取字符串中的信息:
var value = "KEY:a1 VAL:123.45",
pattern = /KEY:(\S+) VAL:(.+)$/g;
var result = pattern.exec(value);
// result[1] == 'a1'
// result[2] == '123.45'
在你的情况,你会使用request.responseText
,而不是value
。
'reply'不是一个DOM元素,它是一个字符串。字符串没有'getElementsByTagName'方法,该字符串甚至不包含HTML。 – 2012-03-09 17:47:37
感谢您的信息。你能详细说明我该怎么做呢? (无论是创建'对象'和使用HTML标签,或解析'字符串' - 后者有我的青睐) – Gil 2012-03-09 17:53:13
关键:不是标签名称和答复不是对象 – Amberlamps 2012-03-09 17:12:47