|
Как загрузить 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, время: 00:24. |
|