Javascript / DOM, синтаксический анализ строки ключ / значение - PullRequest
0 голосов
/ 09 марта 2012

Я отправляю строку с сервера в браузер Firefox в следующем формате:

"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, либо использовать «строки».Я бы предпочел продолжать использовать формат выше, поэтому, пожалуйста, приведите меня к «строковому» решению.Спасибо!

1 Ответ

2 голосов
/ 09 марта 2012

Вы можете использовать простое регулярное выражение для извлечения информации из строки:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...