2016-11-17 2 views
1

Мой HTML выглядит следующим образом:Получить текст из тега без остального содержимого

<span class="price"> 
    0 
    <sup>$</sup> 
</span> 

Как я могу получить только 0 без <sup>$</sup>.

Я пробовал:

var total = parseFloat($('.price').text()); 

Спасибо.

+0

'.text()' получает текст без HTML-теги, так что вы не получите '': https://jsfiddle.net/6m48w40s/ –

+0

@JonP: вы читаете быстро мой текст, я думаю, , – Bonito

ответ

1

$ ("цена")

возвращает коллекцию или массив, необходимо указать элемент. В этом случае вы можете указать его с помощью функции JQuery eq.

var total = parseFloat($('.price').eq(0).text()); 

Я использую 0 (ноль), так как ваш HTML имеет только один элемент с классом цена

Попробуйте это сами: https://jsfiddle.net/ggderas/Ln7gd74n/3

+0

Я думаю, что ваше решение может быть лучшим. – Bonito

+0

За исключением того, что это еще возвращает 0 $ для '$ ('. Price'). Eq (0) .text()': https://jsfiddle.net/ab5ne0rh/ –

+0

Не стесняйтесь сделать снимок: https: // jsfiddle.net/ggderas/Ln7gd74n/ – ggderas

1

попробовать этот

var price = $('.price').contents().map(function() { 
 
       if (this.nodeType == 3 && this.textContent.trim() != '') return Number(this.textContent); 
 
     }).get().join(); 
 

 
console.log(price);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<span class="price"> 
 
    0 
 
    <sup>$</sup> 
 
</span>

+0

Я думаю, что это прекрасный фрагмент кода, но это слишком сложно, чтобы удалить только то, что мне нужно. – Bonito

+0

спасибо, что сказал это как прекрасный кусок кода – EaBangalore

0

Получить innerHTML и удалить все внутренние теги:

var text = document.getElementsByClassName('price')[0].innerHTML.replace(/<.*>.*<\/.*?>/g, ''); 
 
console.log(text);
<body> 
 
    <span class="price"> 
 
    0 
 
    <sup>$</sup> 
 
</span> 
 
    <?body>

0

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

var total = parseFloat($('.price')[0].childNodes[0].nodeValue); 
 
console.log(total); 
 
console.log($('.price')[0].childNodes[0].nodeValue);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<span class="price"> 
 
    0<sup>$</sup> 
 
</span>

Это также работает без JQuery с небольшим изменением:

var total = parseFloat(document.getElementsByClassName('price')[0].childNodes[0].nodeValue); 
1

вы можете легко получить его расщеплением как ниже

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <title></title> 
 
\t <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
</head> 
 
<body> 
 

 
<span class="price"> 
 
    0 
 
    <sup>$</sup> 
 
</span> 
 

 

 
</body> 
 

 

 
<script type="text/javascript"> 
 
\t $(document).ready(function(){ 
 
\t \t var thePricewith_$ = $(".price").text(); // get the text 
 
\t \t var splitted = thePricewith_$.split("$"); // split it from dollar sign 
 

 
\t \t var onlyPrice = splitted[0]; // this gives the price text 
 
\t \t var dollarSign = splitted[1]; // this gives the dollar sign 
 
\t \t alert("price without dollar sign : "+ onlyPrice) // print only the price 
 

 
//additional, if you want to convert it to int and use it do it like this 
 
// var piceInt = parseInt(onlyPrice) 
 
// alert(piceInt+5) 
 

 

 
\t }); 
 

 
</script> 
 

 

 
</html>

  • , а также вы тростниковый преобразовать его к int и использовать его как в комментарии. надеюсь, это поможет вам.
Смежные вопросы