Как получить содержание теге, без дочерних тегов ? :)
Как получить содержание тега, без дочерних тегов ?*
Здравствуйте. Помогите, пожалуйста, решить простую задачу. Есть следующий Html:
<span class="productPrice">
<span itemprop="price">
550
<span class="currency">руб</span>
</span>
</span>
Задача получить значение цены без валюты, но у меня это не выходит :blink: . Ни как не могу избавиться от пресловутого <span class="currency">руб</span> Делаю так:
FullPrice = jQuery(".productPrice>span").html();
FullPrice = jQuery(FullPrice).remove('.currency');
Но мне возвращает как раз то значение которое я хочу удалить :) Как из выше описанного HTML кода получить только число "550" ? Большое, спасибо. |
Цитата:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function (){
var txt=$('.productPrice > span').text();
txt=txt.replace(/[^0-9]/gm,'');
alert('>'+txt+'<')
});
</script>
</head>
<body>
<span class="productPrice">
<span itemprop="price">
550
<span class="currency">руб</span>
</span>
</span>
</body>
</html>
|
Можно так:
alert($('productPrice > span').html().split('<')[0]);
|
<span class="productPrice">
<span itemprop="price">
550
<span class="currency">руб</span>
</span>
</span>
<script>
var text = document.querySelector('.productPrice > span').firstChild.textContent;
alert(text);
</script>
|
<span class="productPrice">
<span itemprop="price">
550
<span class="currency">руб</span>
</span>
</span>
<script>
var price = document.querySelector('.productPrice > span')
alert(parseInt(price.textContent || price.innerText))
</script>
|
Спасибо, большое.
Взял последний вариант, хотя и пример с регулярками тоже вполне походит. Вот только я не понял, чем отличается:
document.querySelector('.productPrice > span')
От:
$('.productPrice > span')
И почему последний не работает в этой конструкции:
price = $('.productPrice > span')
alert(parseInt(price.textContent || price.innerText));
|
Отличие в том что $ - это функция из библиотеки jQuery, и она возвращает не элемент, а массивоподобный объект-коллекцию, у которой нет конечно свойств элемента. Вместо этого нужно price.text() использовать.
querySelector нету в допотопных ИЕ, а в IE8 не работает с css3 селекторами. |
Ок. Понял. Спасибо.
|
Жаль вас всех разочаровывать но
var price = document.querySelector('.productPrice > span');
alert(parseInt(price.textContent || price.innerText));
выведет оба текста из двух span ! Вот решение : (результат - текст только в данном елементе , без дочерних)
function getInnerText(DOMelement)
{
var text = '';
childrenList = DOMelement.childNodes;
for (var i=0; i<childrenList.length; i++)
if (childrenList.item(i).nodeType==3)
text = text + childrenList.item(i).nodeValue;
return text;
}
var price = getInnerText(document.querySelector('.productPrice > span'));
|
delete =)
|
| Часовой пояс GMT +3, время: 09:47. |