|
Как загрузить html в переменую и распарсить по дивам?
Всем привет, надеюсь на помощь гуру - не получаеться разобраться самому :(
есть файлик по структуре такой:
<div id="msg_1">
<div class="time1">
12:00
</div>
<div class="time2">
13:00
</div>
<div class="msg">
Обедать
</div>
</div>
...
<div id="msg_N">
...
</div>
хочу в переменые собрать значения из этих тэгов. (могут присутсвовать стили и другие тэги) вот мой код:
function showMsg()
{
$.get('msg.txt', function(data)
{
var fileMsg1 = "";
var fileMsg2 = "";
fileMsg1 = $(data).filter('#msg_1').html();
fileMsg2 = $(fileMsg1).filter('.msg').html();
}
};
В fileMsg1 получаю содержимое дива msg_1 как и ожидаю, а вот в fileMsg2 - пусто - что я не так делаю? Еще заковырка - зарание не извесно сколько собщений, как можно сосчитать количество div id в переменной? |
упд. додумался вот так сделать:
$.get('msg.txt', function(data)
{
var fileMsg = $(data).filter('#msg_1').find('.msg').html();
var msgshowtime = $(data).filter('#msg_1').find('.time1').html();
var msghidetime = $(data).filter('#msg_1').find('.time2').html();
}
вроде хорошо получилось, а вот как можно сосчитать количество дивов определенного формата ид <div id="msg_1"></div> <div id="msg_2"></div> <div id="msg_3"></div> <div id="msg_4"></div> сосчитать = 4? ненайду никак, :( может кто что посоветует? |
$('div').length
|
или я не понял или плохо объяснил, я загружаю даные в переменную, мне нужно их обработать, обработчик уже работает, но его нужно преминить к каждому див в переменной с определным ид, сколько их будет в файле зарание не известно, вопрос как именно сосчитать не все дивы а именно секционые тоесть те у которых ид = msg_1, msg_2, msg_..., msg_N
|
var num = 0;
$('div').each(function () {
var id = $(this).attr('id');
if (id.test(/msg_/)) num++;
});
В синтаксисе test не уверен (не помню точно), но суть ясна. |
ок, спасибо, идею понял, вот только как такое применить к переменной в которой хтмл код?
|
Если этот код лежит в переменной и это строка то это ещё проще:
var str = /*Ваша строка*/;
var array = str.split('msg_');//Превращаем строку в массив, разбивая члены массивов вашим идентификатором
var num = array.length; //длинна этого массива и будет количеством дивов
|
отлично! Работает, хоть и возращает на единицу больше, но это поправимо, спасибо
|
Еще вопрос по тому же самому, а как можно разбить сообщение в массив без обрамляющего тега <div id="msg_1">? то есть чтобы элементы массива были содержание этого дива, но не он сам?
|
Тут 2 основных пути:
1) Регулярные выражения и возможно пользование split 2) Использование методов replace и split; В регулярных выражениях я не силен, можете спросить об этом в разделе "Общие вопросы javascript", там часто спрашивают про выражения. Если изберете второй путь, то почитайте про эти методы, это не сложно разобрать. Что не получится - помогу. |
| Часовой пояс GMT +3, время: 14:57. |
|