2010-11-17 5 views
14

Я строю ряд сумм, но вам нужно удалить знаки доллара. У меня есть этот JQuery код:Удаление знаков доллара от цен

buildList($('.productPriceID > .productitemcell'), 'pricelist') 

Это возвращение

pricelist=$15.00,$19.50,$29.50 

Мне нужно удалить знаки доллара, но не могу показаться, чтобы выяснить это. Пробовал использовать .trim, но я думаю, что удаляет только пробел.

Извините за новый вопрос! Заранее благодарю за любую помощь!

Вот полный код:

function buildList(items, name) { 
var values = []; 
items.each(function() { 
values.push(this.value || $(this).text()); 
}); 
return name + '=' + values.join(','); 
} 

var result = [ 
buildList($('.productCodeID > .productitemcell'), 'skulist'), 
buildList($('.productQuantityID > .productitemcell > input'), 'quantitylist'), 
buildList($('.productPriceID > .productitemcell'), 'pricelist') 
]; 

var string = result.join('&'); 

Вот исходный код перед Javascript работает

<span class="productPriceID"> 
<div class="productitemcell">$15.00</div> 
<div class="productitemcell">$19.50</div> 
<div class="productitemcell">$29.50</div> 
</span> 
+0

Это не имеет ничего общего с JQuery, это просто Javascript в этом случае. – Soviut

+0

Правда. Он завернут в некоторый jquery над этим. Я включил больше кода, поэтому, надеюсь, это имеет больше смысла. –

ответ

22

EDIT: Запуск над ответом теперь, когда у меня есть код, который работает.

Глядя на обновленный код, это должно работать:

Пример:http://jsbin.com/ekege3/

var result = [ 
    buildList($('.productCodeID > .productitemcell'), 'skulist'), 
    buildList($('.productQuantityID > .productitemcell > input'), 'quantitylist'), 
    buildList($('.productPriceID > .productitemcell'), 'pricelist') 
]; 

result[ 2 ] = result[ 2 ].replace(/\$/g, ''); 

var string = result.join('&'); 

Side Примечание: Вы можете сократить вашу buildList функцию немного как это:

function buildList(items, name) { 
    return (name + '=') + items.map(function() { 
     return (this.value || $(this).text()); 
    }).get().join(','); 
} 

Оригинальный ответ:

Если у вас есть строка, просто использовать .replace().

var str = "pricelist=$15.00,$19.50,$29.50"; 

str = str.replace(/\$/g, ''); 

Или вы говорите, что у вас есть переменная pricelist, содержащую массив? Если да, то это:

var pricelist = ["$15.00","$19.50","$29.50"]; 

for(var i = 0, len = pricelist.length; i < len; i++) { 
    pricelist[ i ] = pricelist[ i ].replace('$', ''); 
} 

EDIT: Это звучит так, как будто метод buildList возвращает массив.

Один из способов проверить бы сделать это:

alert(Object.prototype.toString.call(result[2])); 

И посмотреть, что это дает вам.

В любом случае, если предположить, что это массив, вот обновленная версия второго примера.

var result = [ 
    buildList($('.productCodeID > .productitemcell'), 'skulist'), 
    buildList($('.productQuantityID > .productitemcell > input'), 'quantitylist'), 
    buildList($('.productPriceID > .productitemcell'), 'pricelist') 
]; 

// verify the data type 
alert(Object.prototype.toString.call(result[ 2 ])); 

// loop over result[ 2 ], replacing the $ with '' 
for(var i = 0, len = result[ 2 ].length; i < len; i++) { 
    result[ 2 ][ i ] = result[ 2 ][ i ].replace('$', ''); 
} 

var string = result.join('&'); 

+0

Я обновил код выше. В принципе, прайс-лист строится из списка цен. Мне нужно снять знаки доллара в какой-то момент процесса. Спасибо за вашу помощь! –

+0

@mmsa - Если вы можете, измените разметку, чтобы вы не получали '' 'в первую очередь. В противном случае, похоже, вы говорите, что 'buildList' возвращает строку, поэтому мой первый пример должен работать. Если вы хотите сделать это до того, как вы выполните 'join()', то просто используйте мой первый пример, но замените 'str' на' result [2] 'как на' result [2] = result [2] .replace (/ \ $/g, '') '. – user113716

+0

Во-первых, спасибо за помощь! По какой-то причине это не работает. В приведенном выше примере ваша переменная str является фиксированным значением. Эти цифры в долларах будут меняться для каждого пользователя. Его вытащили из визитной карточки. Я поставил код, но он почему-то генерирует ошибку .replace. –

Смежные вопросы