регулярное выражение в js

Print RSS
436

И
Author
Пацак
0
Здравствуйте,есть html код,надо регулярным выражением вырезать всё что находится между <div class="gmenu"></div>,пытался так data.match('~<div class="gmenu">(.*?)</div>~s');,но возвращает 0

Голубые штаны
0
Этот блок на странице один или несколько?
Регулярку можно применить, но ресурсов потребуется больше, чем применить функцию.

Голубые штаны
0
Вобщем, дешевле сделать так:
<script>
function clearContent(box, replase) {
	var arr = document.body.getElementsByClassName(box);
	if (!arr) return false;
	
	var len  = arr.length;
	if (len <= 0) return false;
	
	if (!replase) var replase = '';
	
	for(var i=0; i<len; i++) arr[i].innerHTML = replase;
};
</script>


<div class="ololo">Lorem ipsum dolor sit amet...</div>
<div class="ololo">Lorem ipsum dolor sit amet...</div>
<div class="ololo">Lorem ipsum dolor sit amet...</div>
<div class="ololo">Lorem ipsum dolor sit amet...</div>

<script>clearContent('ololo');</script>
Функция clearContent() примет 2 аргумента. Первый обязательный - название класса блока. Второй - необязательный, принимает значение, на которое надо заменить контент в блоке с искомым классом.

Например так:
<script>clearContent('ololo', 'новый контент');</script>
И
Author
Пацак
0
ох извиняюсь,почему то я написал что надо вырезать,нет мне надо получить то что в div'aх

Добавлено через 01:13 сек.
document.body.getElementsByClassName(box);
за это спасибо,думаю тогда нужда в регулярках отпадает
Changed: Изнаур (06.09.2013 / 18:55)

Голубые штаны
0
4. Iznaur95, тогда сделай так:

<script>
function valuesContent(box, replase) {
	var arr = document.body.getElementsByClassName(box);
	if (!arr) return false;
	
	var len  = arr.length;
	if (len <= 0) return false;
	
	if (!replase) var replase = '';
	var values = [];
	
	for(var i=0; i<len; i++) {
		values.push(arr[i].innerHTML);
		arr[i].innerHTML = replase;
	}
	return values;
};
</script>

<div class="ololo">Содержимое блока 1</div>
<div class="ololo">Содержимое блока 2</div>
<div class="ololo">Содержимое блока 3</div>
<div class="ololo">Содержимое блока 4</div>

<script>
var values = valuesContent('ololo', 'новый контент');
if (values) alert(values[0]);
</script>

Функция valuesContent() работает так же, как я написал выше, но вернет либо FALSE, либо массив с содержимым всех блоков с искомым классом.

Принять можно либо просто values[0] - это первый найденный элемент, либо перебором массива. Как удобнее.
И
Author
Пацак
0
5. dima.london, спасибо

Голубые штаны
0
6. Iznaur95, а самый простой способ такой:
<script>
var value = document.body.getElementsByClassName('искомый_класс')[0];
</script>
Но учти, что getElementsByClassName() не поддерживается древними браузерами типа Netscape, IE6 и прочими.
И
Author
Пацак
0
7. dima.london, это мне и не нужно)пытаюсь написать расширение под хром...
И
Author
Пацак
0
не могу вывести полученные данные, вот функция:
function handleServerResponse()
{
// прочитать сообщение, полученное от сервера(ajax запрос)
   var xmlResponse = xmlHttp.responseXML;
   xmlRoot = xmlResponse.documentElement;
  var sm = xmlRoot.getElementsByClassName('gmenu');
  console.log(sm);
    myDiv = document.getElementById("lol");
// вывести полученный код HTML
    myDiv.innerHTML = sm.item(0).data;
}
в логах html код показывает,а вот вывести на страницу не удается,никак,sm.item(0).data возвращает undefined,sm.item(0) возвращает [object HTMLDivElement]

Добавлено через 03:08 сек.
хотел использовать responseText т.к. в ответ получаю html код,но тогда getElementsByClassName не работает
Changed: Изнаур (07.09.2013 / 15:32)

Голубые штаны
0
В каком формате AJAX возвращает информацию? Надо принимать responseText, и если приходит в JSON или XML или еще как-то экзотически, надо преобразовывать эти данные в нормальный вид.
Stickers / Tags / Rules / Top topics / Top Posts / Search