的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变量也是错误的,不匹配的表格单元格,刚采摘的第一个桌子)。

我甚至不知道如何显示keyval值(document.write()和alert()什么也不做,我也没有看到如何在Firefox中跟踪这段代码)。

欢迎任何想法,提示,更正或代码示例,但请不要推荐使用任何库,我想用少量代码来完成。

编辑:从两个评论,我明白,有两种不同的方式来进行:无论是使用DOM对象和HTML标签,或使用'字符串'。我宁愿继续使用上面的格式,所以请引导我使用'字符串'解决方案。谢谢!

+0

'reply'不是一个DOM元素,它是一个字符串。字符串没有'getElementsByTagName'方法,该字符串甚至不包含HTML。 – 2012-03-09 17:47:37

+0

感谢您的信息。你能详细说明我该怎么做呢? (无论是创建'对象'和使用HTML标签,或解析'字符串' - 后者有我的青睐) – Gil 2012-03-09 17:53:13

+0

关键:不是标签名称和答复不是对象 – Amberlamps 2012-03-09 17:12:47

您可以使用一个简单的正则表达式来提取字符串中的信息:

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

+0

谢谢菲利克斯。我将在此基础上工作。 – Gil 2012-03-09 18:06:03

+0

不要忘记接受对你最有帮助的答案;) – 2012-03-09 18:10:57

+0

已付款到期的付款=) – Gil 2012-03-10 11:49:48