Как получить содержание теге, без дочерних тегов ? :)
Как получить содержание тега, без дочерних тегов ?*
Здравствуйте. Помогите, пожалуйста, решить простую задачу. Есть следующий 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, время: 01:50. |