获取没有标记的HTML文本

我正在尝试通过jquery访问没有HTML的DIV内的一段文本(在本例中为“12个月”)。 我知道如果我知道class级或身份证,我就能找到它,但在这种情况下,它似乎无法被抓住。 有人可以提供潜在的解决方案吗?

- 19.99 $ / 12 Months //This piece of text is the one I need to get and change
Si usted escogió la suscripción $19.99, se le cobrará por esa cantidad anualmente.

如果有帮助,这里是检查员看到的代码打印输出。

在此处输入图像描述

这有效!

 var a = $('.pms-subscription-plan').first().contents().filter(function() { return this.nodeType == 3; }).text(); console.log($.trim(a)); 
  
- 19.99 $ / 12 Months
Si usted escogió la suscripción $19.99, se le cobrará por esa cantidad anualmente.
 var text = $(".pms-subscription-plan").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text(); 

在这种情况下,以下代码将起作用:

 document.getElementsByClassName("pms-divider")[1].nextSibling 

但是,我强烈建议将此文本放在标签中。 如果您以任何方式重构DOM,此代码将不起作用。

在HTML中有元素和节点。 每段文字都是一个节点。 您可以使用childNodes集合。

 var textNode = document.querySelector(".pms-subscription-plan").childNodes[9].data.trim(); 

正如其他人所建议的那样,您可以使用节点/下一个兄弟来获取文本。

但是,对你的html / css做一个小调整是一个更好的选择,例如:

 
- 19.99 $ / 12 Months
Si usted escogió la suscripción $19.99, se le cobrará por esa cantidad anualmente.

而这个小的改变[在持续时间内添加一个span类]会让你从长远来看更容易。 只是我的tuppence!

希望这可以帮助

此function将删除所有标签和内容。 剩下的就是您需要的文字:

 function removeTags(){ var txt = $(".pms-subscription-plan").html(); var rex = /(<([^>]+)>).*(<([^>]+)>)|(<([^>]+)>)/ig; alert(txt.replace(rex , "")); }