Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.11.2018, 11:57
Интересующийся
Отправить личное сообщение для ishurgaya Посмотреть профиль Найти все сообщения от ishurgaya
 
Регистрация: 12.08.2015
Сообщений: 29

получить элементы из ответа ajax
Добрый день.

В ответе от ajax получаю такие строки.
<div id="js-product-list">
		<div class="thumbnail-container">
			  <a href="#" class="thumbnail product-thumbnail">
					<img src="#">
			  </a>     
			  <div class="product-description">
				<h2 class="h3 product-title">
				   <a href="#">TEXT1</a>
				</h2>
			  </div>
		</div>
		<div class="thumbnail-container">
			  <a href="#" class="thumbnail product-thumbnail">
					<img src="#">
			  </a>     
			  <div class="product-description">
				<h2 class="h3 product-title">
				   <a href="#">TEXT2</a>
				</h2>
			  </div>
		</div>
		<div class="thumbnail-container">
			  <a href="#" class="thumbnail product-thumbnail">
					<img src="#">
			  </a>     
			  <div class="product-description">
				<h2 class="h3 product-title">
				   <a href="#">TEXT3</a>
				</h2>
			  </div>
		</div>
</div>


Пытаюсь получить все элементы вместе с тегом <a> :<a href="#">TEXT1</a>, <a href="#">TEXT2</a>, <a href="#">TEXT3</a> и т.д.

Ответ сервера находится здесь xmlhttp.responseText.
Пишу так $.parseHTML(xmlhttp.responseText) иначе не работают селекторы по ответу ajax.

Пробую так:
$($.parseHTML(xmlhttp.responseText)).find("#js-product-list .product-title a").clone();

, но получаю массив из TEXT1, TEXT2, TEXT3

Пробую так:
$($.parseHTML(xmlhttp.responseText)).find("#js-product-list .product-title").html();

, получаю только первый элемент <a href="#">TEXT1</a>

Помогите получить все <a href="#">TEXT1</a>, <a href="#">TEXT2</a>, <a href="#">TEXT3</a> и т.д. вместе с тегом a.

Последний раз редактировалось ishurgaya, 30.11.2018 в 12:00.
Ответить с цитированием
  #2 (permalink)  
Старый 30.11.2018, 12:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

ishurgaya,
непонятно что вам нужно, элементы или html.
Сообщение от ishurgaya
но получаю массив из TEXT1, TEXT2, TEXT3
что не так в этом массиве?
Ответить с цитированием
  #3 (permalink)  
Старый 30.11.2018, 12:11
Интересующийся
Отправить личное сообщение для ishurgaya Посмотреть профиль Найти все сообщения от ishurgaya
 
Регистрация: 12.08.2015
Сообщений: 29

Сообщение от рони Посмотреть сообщение
ishurgaya,
непонятно что вам нужно, элементы или html.

что не так в этом массиве?
html нужен
<a href="link1">TEXT1</a>
<a href="link2">TEXT2</a>
<a href="link3">TEXT3</a>
и т.д.
Ответить с цитированием
  #4 (permalink)  
Старый 30.11.2018, 12:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

ishurgaya,
так идите циклом по ("#js-product-list .product-title") и берите html
Ответить с цитированием
  #5 (permalink)  
Старый 30.11.2018, 12:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

ishurgaya,
можно так
var arr =  $.map($($.parseHTML(xmlhttp.responseText)).find("#js-product-list .product-title"), function(div) {
     return div.innerHTML.trim()
})
Ответить с цитированием
  #6 (permalink)  
Старый 30.11.2018, 12:23
Интересующийся
Отправить личное сообщение для ishurgaya Посмотреть профиль Найти все сообщения от ishurgaya
 
Регистрация: 12.08.2015
Сообщений: 29

собственно я это и делаю.

остановился на таком варианте:
products = $($.parseHTML(xmlhttp.responseText)).find("#js-product-list .product-title a");

 for(var y=0; y < products.length; y++){
	if(products[y] != "undefined")
	{
	     output += "<li><a href='"+ products[y].attributes.href.nodeValue +"'>" + products[y].innerHTML +"</a></li>";
	}
}



Почему то если писать так:
for(var y=0; y < products.length; y++){
	if(products[y] != "undefined")
	{
	     output += "<li>" + products[y] +"</li>";
	}
}


то вставляет только текст, ввидимо из-за привода к типу стринг?
Ответить с цитированием
  #7 (permalink)  
Старый 30.11.2018, 13:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,149

Сообщение от ishurgaya
ввидимо из-за привода к типу стринг?
да
и ваша первая строка была уже достаточной!!!
$($.parseHTML(xmlhttp.responseText)).find("#js-product-list .product-title a").appendTo("ul").wrap("<li/>");
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить исходный код страницы после ajax lerneree AJAX и COMET 4 28.05.2018 13:53
Получить заголовок Ajax запроса. iGusse Общие вопросы Javascript 0 02.11.2012 13:20
Получить все элементы строки таблицы по нажатию на кнопку ansi_str Events/DOM/Window 2 01.03.2012 16:58
ajax, завершение функии до получения ответа Slavenin AJAX и COMET 5 05.12.2010 03:23
как дождаться AJAX ответа scuter Общие вопросы Javascript 3 23.03.2008 05:54