Javascript 获取没有标记的HTML文本

Javascript 获取没有标记的HTML文本,javascript,jquery,html,Javascript,Jquery,Html,我试图通过jquery(在本例中是“12个月”)访问没有HTML的DIV中的一段文本。我知道,如果我知道班级或id,我可以找到它,但在这种情况下,它似乎没有办法被抓住。有人能提供一个潜在的解决方案吗 <div class="pms-subscription-plan"> <label> <input type="radio" name="subscription_plans" data-price="19.99" data-duration="12" value="

我试图通过jquery(在本例中是“12个月”)访问没有HTML的DIV中的一段文本。我知道,如果我知道班级或id,我可以找到它,但在这种情况下,它似乎没有办法被抓住。有人能提供一个潜在的解决方案吗

<div class="pms-subscription-plan">
<label>
<input type="radio" name="subscription_plans" data-price="19.99" data-duration="12" value="1219">$19.99 cada 12 meses</label>
<span class="pms-divider"> - </span><span class="pms-subscription-plan-price">19.99</span>
<span class="pms-subscription-plan-currency">$</span>
<span class="pms-divider"> / </span> 12 Months //This piece of text is the one I need to get and change
<div class="pms-subscription-plan-description">Si usted escogió la suscripción $19.99, se le cobrará por esa cantidad anualmente.</div>
</div>

19.99加元12米
- 19.99
$
/12个月//这段文字是我需要获取和更改的
这是一笔19.99美元的交易,由康蒂达·阿努阿尔门特(cantidad anualmente)负责。
如果有帮助的话,这里有一个在inspector中看到的代码打印输出


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

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

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

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

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

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

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

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

document.getElementsByClassName("pms-divider")[1].nextSibling 
但是,我强烈建议将此文本放入标记中。如果您以任何方式重新构造DOM,此代码将不起作用。

这是可行的

var a=$('.pms订阅计划').first().contents().filter(函数(){
返回this.nodeType==3;
}).text();
console.log($.trim(a))

19.99加元12米
- 19.99
$
/12个月
这是一笔19.99美元的交易,由康蒂达·阿努阿尔门特(cantidad anualmente)负责。
这很有效

var a=$('.pms订阅计划').first().contents().filter(函数(){
返回this.nodeType==3;
}).text();
console.log($.trim(a))

19.99加元12米
- 19.99
$
/12个月
这是一笔19.99美元的交易,由康蒂达·阿努阿尔门特(cantidad anualmente)负责。

正如其他人所建议的,您可以使用节点/下一个同级节点来获取文本

但是,最好对html/css进行一些小的调整,例如:

<div class="pms-subscription-plan">

<label>
<input type="radio" name="subscription_plans" data-price="19.99" data-duration="12" value="1219">$19.99 cada 12 meses</label>
<span class="pms-divider"> - </span><span class="pms-subscription-plan-price">19.99</span>
<span class="pms-subscription-plan-currency">$</span>
<span class="pms-divider">/</span> 
<span class="pms-duration">12 Months</span>  <!--add a span class for duration--->
<div class="pms-subscription-plan-description">Si usted escogió la suscripción $19.99, se le cobrará por esa cantidad anualmente.</div>
</div>

19.99加元12米
- 19.99
$
/ 
12个月
这是一笔19.99美元的交易,由康蒂达·阿努阿尔门特(cantidad anualmente)负责。
从长远来看,这个小小的改变[为持续时间添加一个span类]会让你更容易。就我的一便士


希望这有帮助

您可以像其他人建议的那样,使用节点/下一个同级来获取文本

但是,最好对html/css进行一些小的调整,例如:

<div class="pms-subscription-plan">

<label>
<input type="radio" name="subscription_plans" data-price="19.99" data-duration="12" value="1219">$19.99 cada 12 meses</label>
<span class="pms-divider"> - </span><span class="pms-subscription-plan-price">19.99</span>
<span class="pms-subscription-plan-currency">$</span>
<span class="pms-divider">/</span> 
<span class="pms-duration">12 Months</span>  <!--add a span class for duration--->
<div class="pms-subscription-plan-description">Si usted escogió la suscripción $19.99, se le cobrará por esa cantidad anualmente.</div>
</div>

19.99加元12米
- 19.99
$
/ 
12个月
这是一笔19.99美元的交易,由康蒂达·阿努阿尔门特(cantidad anualmente)负责。
从长远来看,这个小小的改变[为持续时间添加一个span类]会让你更容易。就我的一便士


希望这有帮助

此功能将删除所有标签和内容。剩下的是您需要的文本:

function removeTags(){
  var txt = $(".pms-subscription-plan").html();
  var rex = /(<([^>]+)>).*(<([^>]+)>)|(<([^>]+)>)/ig;
  alert(txt.replace(rex , ""));
}
函数removeTags(){
var txt=$(“.pms订阅计划”).html();
var rex=/(]+>).*(]+>)|(]+>)/ig;
警报(txt.replace(rex,”);
}

此功能将删除所有标签和内容。剩下的是您需要的文本:

function removeTags(){
  var txt = $(".pms-subscription-plan").html();
  var rex = /(<([^>]+)>).*(<([^>]+)>)|(<([^>]+)>)/ig;
  alert(txt.replace(rex , ""));
}
函数removeTags(){
var txt=$(“.pms订阅计划”).html();
var rex=/(]+>).*(]+>)|(]+>)/ig;
警报(txt.replace(rex,”);
}

您想用它做什么?@mr.void隐藏或更改它。$('label').text();的第一个答案解决了此问题。您想如何处理它?@mr.void将其隐藏或更改。$('label').text();的第一个答案解决了这个问题。这将得到“$19.99 cada 12 meses”,而不是“12个月”,它不是
标签的子节点
谢谢你的信息,我更新了它。这将得到“$19.99 cada 12 meses”,而不是“12个月”,它不是
标签的子节点
谢谢你的信息,我更新了它。