Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2013, 15:30
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

Как загрузить 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 в переменной?
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2013, 20:34
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

упд. додумался вот так сделать:
$.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?

ненайду никак, может кто что посоветует?

Последний раз редактировалось Kvark, 08.04.2013 в 20:44.
Ответить с цитированием
  #3 (permalink)  
Старый 09.04.2013, 09:23
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

$('div').length
Ответить с цитированием
  #4 (permalink)  
Старый 09.04.2013, 12:01
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

или я не понял или плохо объяснил, я загружаю даные в переменную, мне нужно их обработать, обработчик уже работает, но его нужно преминить к каждому див в переменной с определным ид, сколько их будет в файле зарание не известно, вопрос как именно сосчитать не все дивы а именно секционые тоесть те у которых ид = msg_1, msg_2, msg_..., msg_N
Ответить с цитированием
  #5 (permalink)  
Старый 09.04.2013, 12:05
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

var num = 0;
$('div').each(function () {
  var id = $(this).attr('id');
  if (id.test(/msg_/)) num++;
});


В синтаксисе test не уверен (не помню точно), но суть ясна.
Ответить с цитированием
  #6 (permalink)  
Старый 09.04.2013, 12:29
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

ок, спасибо, идею понял, вот только как такое применить к переменной в которой хтмл код?
Ответить с цитированием
  #7 (permalink)  
Старый 09.04.2013, 12:33
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Если этот код лежит в переменной и это строка то это ещё проще:
var str = /*Ваша строка*/;
var array = str.split('msg_');//Превращаем строку в массив, разбивая члены массивов вашим идентификатором
var num = array.length; //длинна этого массива и будет количеством дивов
Ответить с цитированием
  #8 (permalink)  
Старый 09.04.2013, 12:41
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

отлично! Работает, хоть и возращает на единицу больше, но это поправимо, спасибо
Ответить с цитированием
  #9 (permalink)  
Старый 09.04.2013, 13:13
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

Еще вопрос по тому же самому, а как можно разбить сообщение в массив без обрамляющего тега <div id="msg_1">? то есть чтобы элементы массива были содержание этого дива, но не он сам?
Ответить с цитированием
  #10 (permalink)  
Старый 09.04.2013, 13:23
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Тут 2 основных пути:
1) Регулярные выражения и возможно пользование split
2) Использование методов replace и split;

В регулярных выражениях я не силен, можете спросить об этом в разделе "Общие вопросы javascript", там часто спрашивают про выражения.

Если изберете второй путь, то почитайте про эти методы, это не сложно разобрать. Что не получится - помогу.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать код html страницы из фрейма на сервер vuler Общие вопросы Javascript 5 20.02.2012 16:31
Как заставить браузер игнорировать html код?? Tums37 Общие вопросы Javascript 7 21.01.2012 13:48
Help ! Как загрузить данные по ссылке из таблицы1 в таблицу2 ? asked86 Общие вопросы Javascript 1 25.03.2009 21:06
как узнать html код документа, подгруженного в iframe alexKniaz Events/DOM/Window 7 03.12.2008 12:37
На входе HTML получить на выходе просто текст, как? Dmitry Общие вопросы Javascript 2 25.08.2008 10:42