Javascript 获取没有标记的HTML文本
我试图通过jquery(在本例中是“12个月”)访问没有HTML的DIV中的一段文本。我知道,如果我知道班级或id,我可以找到它,但在这种情况下,它似乎没有办法被抓住。有人能提供一个潜在的解决方案吗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="
<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个月”,它不是标签的子节点
谢谢你的信息,我更新了它。