2016-05-20 2 views
1

Доброго дня, не кто-нибудь знают, как форматировать или добавить некоторые дополнительные строки (как запятая), чтобы результаты дают текста()? Я использую его в веб-соскабливании.Форматирование строки результата текст()

Вот фрагмент скребка:

var makeupCatBrand = $('span.caption').children('h6').text().trim() 

Вот результат, когда я использую console.log(makeupCatBrand):

Jeffree StarCharlotte TilburyRCMA MakeupNatasha DenonaAnna SuiJeffree StarSugarpillAnna SuiArmour BeautyOCCSugarpillCover FXIT Косметика Rms beautyMake-Up AtelierCover FXCover FXIT Косметика BeautyblenderBY TERRYKevyn AucoinbeautyblenderIT Косметика Charlotte TilburyBY TERRYCover FXViseartCover FXWayne GossRCMA MakeupAnna SuiAnna SuiCover FXOCCAnna SuiCharlotte Tilbury

Я попытался нажать его на массив, но все это показывает только как один индекс в массиве.

Я хочу добавить как минимум запятую в бренд (Jeffree Star, Charlotte Tilbury и т. Д.), так что я могу легко разбить ее перед нажатием на массив. Любой ответ или идея очень ценится

О, все они имеют один и тот же класс, нет ID, поэтому это будет довольно трудно, если бы я, чтобы очистить их один на один

Вот HTML код двух бренд (все они имели один и тот же формат, поэтому я включаю только одно, единственное изменение, если продукт с этой марки было два или более доступных оттенков):

<li class="shop_t_browse"> 
    <a class="tile" href="/p/jeffree-star-velour-liquid-lipstick" > 
     <span class="img txt_c"> 
      <img class="inlineblock"  src="//dy6g3i6a1660s.cloudfront.net/eNiRpXtM7WlLKE7qyhAw4AR-BH4/320_p-cd/jeffree-star-velour-liquid-lipstick.jpg" alt="Jeffree Star Velour Liquid Lipstick" /> 
     </span> 
     <span class="caption"> 

      <h6>Jeffree Star</h6> 
      <h5>Velour Liquid Lipstick</h5> 
      <p><strong>$18 USD</strong></p> 
      <small class="shop_msg_color"> 
       24 shades available 
      </small> 
      <small class="rating_reviews txt_pale hidden_mobile"> 
       <div class="ratingInfo"> 
        <span class="rating_image_small" style="background-position: 0 -250.0000000000px;"></span> 
        <span class="txt_pale glyph_stat">/674</span> 
       </div> 
      </small> 
     </span> 
    </a> 
</li> 
+1

Добавьте код HTML, который содержит эту информацию. –

+0

Что делает '$ ('span.caption'). Children ('h6')' return? –

+0

@JoeHanink В консольном журнале довольно долго, я отредактирую свое сообщение, чтобы показать какой-то код html для брендов –

ответ

0

Как я вижу, вы можете, так как у вас есть несколько детей, пройдите через каждый из них по отдельности.

Так вот как это могло бы работать.

var makeupCatBrand; 
$('span.caption').children('h6').each(function(){ 
    makeupCatBrand += $(this).text().trim(); 
    makeupCatBrand += ", "; 
}) 
+0

Это помогло, но есть одно неопределенное слово в первом бренде (_undefinedJeffree Star_), любая идея? –

+0

Поделитесь html с undefined Я посмотрю на работу :) –

+0

В одном из брендов одного из брендов есть вопрос, у всего другого бренда есть тот же HTML-код, поэтому я не стал копировать все их. Я получаю эту проблему после консоли console.log makeCaptBrand. В любом случае ответ @Christian Hedemann дал тот же результат, но без неопределенного слова, но я все еще хочу знать, что вызвало эту проблему для справки. –

-1
var arr = []; 
$('span.caption').children('h6').each(function() 
{ 
    arr.push($(this).text().trim()); 
}); 
console.log(arr.join(",")); 
0

Вы должны использовать метод replace() для репрезентации кружева белого пространства с комой или комой и белым пространством, как, например:

makeupCatBrand.replace(" ", ","); 

или

makeupCatBrand.replace(" ", ", "); 

первый аргументом является частью строки, которую вы хотите заменить, а второй аргумент строка, которую вы хотите заменить его с.

вы также можете использовать split() метод, чтобы получить массив строк, как например:

var strArray = makeupCatBrand.split(" "); 

Вы можете разделить строку, как это так, вы можете добавить ком и йоты пространства, если вы хотите сохранить его в конечный результат.

+0

Tnx для ответа: D –

+0

Добро пожаловать :) –

0
var children = $('span.caption').children('h6'); 

var resultsArray = []; 
for (var i=0;i<children.length;i++) { 
    resultsArray[i] = children[i].textContent; 
} 

console.log(resultsArray); 

рабочий код - http://jsbin.com/hozasahota/1/edit?html,js,output

+0

Пробовал, но console.log не отображался. –

+0

где, в jsbin? –

+0

Я пробовал это в своих кодах, но он возвращал несколько неопределенных тем же, что и длина –

0

Одна линия, разделяющей с ' ':

var makeupCatBrand = $('span.caption').children('h6').map(function(){return $(this).text()}).get().join(','); 

... как это',' может быть опущена, как это по умолчанию. Я поместил его в код, чтобы показать, что сепаратор можно настроить.

+0

Это тоже помогло, немного лучше, чем мой принятый ответ tnx! –