JavaScript:字符串匹配后返回锚定标记
我试图在变量中返回并捕获匹配字符串的下一个立即锚点标记。我只想得到匹配字符串后面的单个锚标记,其他什么都不想。这就是我被困的地方。下面是代码和JSFIDLEJavaScript:字符串匹配后返回锚定标记,javascript,regex,string,match,return-value,Javascript,Regex,String,Match,Return Value,我试图在变量中返回并捕获匹配字符串的下一个立即锚点标记。我只想得到匹配字符串后面的单个锚标记,其他什么都不想。这就是我被困的地方。下面是代码和JSFIDLE <body> <p id="demo">Click the button to display the matches.</p> <p><strong>Regular Edition of 325</strong></p> <a href="link
<body>
<p id="demo">Click the button to display the matches.</p>
<p><strong>Regular Edition of 325</strong></p>
<a href="link1.html">Link 1</a>
<p><strong>Regular Edition of 658</strong></p>
<a href="link2.html">Link 2</a>
<p><strong>Regular Edition of Something Else</strong></p>
<a href="link3.html">Link 3</a>
<p></p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction(){
parseIt = $("p").find("strong").text();
matchIt();
}
function matchIt(){
resIt = parseIt.match(/Regular Edition of 325/);
document.getElementById("demo").innerHTML=resIt;
console.log($(resIt));
}
</script>
</body>
单击按钮以显示匹配项
325的常规版
658的常规版
其他内容的常规版
试试看
函数myFunction(){
parseIt=$(“p”).find(“strong”).text();
匹配();
}
函数matchIt(){
resIt=parseIt.match(/325/的常规版);
document.getElementById(“demo”).innerHTML=resIt;
log($(resIt));
}
非常感谢您的帮助。如果您需要更多信息,请告诉我。您可以使用
.filter
通过匹配的文本获取p
元素:
function myFunction(){
parseIt = $("p").find("strong");
matchIt();
}
function matchIt(){
resIt = parseIt.filter(function () {
return $(this).text().match(/Regular Edition of 325/);
});
document.getElementById("demo").innerHTML= resIt.parent().next().text();
}
旁注:不要通过全局变量在函数之间进行通信。每个函数应该只使用自己的局部变量或封闭变量。您可以使用
.filter
通过匹配的文本获取p
元素:
function myFunction(){
parseIt = $("p").find("strong");
matchIt();
}
function matchIt(){
resIt = parseIt.filter(function () {
return $(this).text().match(/Regular Edition of 325/);
});
document.getElementById("demo").innerHTML= resIt.parent().next().text();
}
旁注:不要通过全局变量在函数之间进行通信。每个函数应该只使用自己的局部变量或封闭变量。我使用了以下方法:
$('button').click(function() {
$('p.search').each(function() {
if(this.innerHTML.match(/Regular Edition of 325/)) {
var $link = $(this).next('a');
$('#demo').text($link.text());
console.log($link);
}
});
});
单击按钮时,它会循环遍历要搜索的每个元素。如果元素内容与正则表达式匹配,那么我们将找到下一个链接。在此之后,您可以使用链接执行任何操作
更新: 这是一个纯JS版本。请注意,由于我使用了,这只与IE9+兼容
document.getElementById('trigger').addEventListener('click',function(){
var段落=document.getElementsByClassName('search');
对于(变量i=0;i
我用了这个:
$('button').click(function() {
$('p.search').each(function() {
if(this.innerHTML.match(/Regular Edition of 325/)) {
var $link = $(this).next('a');
$('#demo').text($link.text());
console.log($link);
}
});
});
单击按钮时,它会循环遍历要搜索的每个元素。如果元素内容与正则表达式匹配,那么我们将找到下一个链接。在此之后,您可以使用链接执行任何操作
更新: 这是一个纯JS版本。请注意,由于我使用了,这只与IE9+兼容
document.getElementById('trigger').addEventListener('click',function(){
var段落=document.getElementsByClassName('search');
对于(变量i=0;i
您可以通过执行以下操作来简化此过程:
function myFunction() {
parseIt = $("p strong").filter(function () {
return this.innerText.match(/Regular Edition of 325/);
});
var anchor = parseIt.parent().next("a");
}
您可以通过执行以下操作来简化此过程:
function myFunction() {
parseIt = $("p strong").filter(function () {
return this.innerText.match(/Regular Edition of 325/);
});
var anchor = parseIt.parent().next("a");
}
如果您希望从锚定中获得属性,则更容易通过“a”标记而不是段落节点进行循环。可以使用jQuery的“prev()”方法访问前面的“p”,并检查其文本是否与正则表达式匹配。 请注意,如果html发生更改,此代码将中断。考虑在DIV中包装每个标签/链接,并遍历容器,而不是使用PREV/NeX/Read等来遍历, 由于()调用了纯JS版本:
如果您希望从锚定中获得属性,则更容易通过“a”标记而不是段落节点进行循环。可以使用jQuery的“prev()”方法访问前面的“p”,并检查其文本是否与正则表达式匹配。 请注意,如果html发生更改,此代码将中断。考虑在DIV中包装每个标签/链接,并遍历容器,而不是使用PREV/NeX/Read等来遍历, 由于()调用了纯JS版本:
作为补充说明,您不应该使用内联Javascript。创建一个事件监听器,如,
$('button')。单击(myFunction)代码>。是的,我知道。谢谢。顺便说一句,你不应该使用内联Javascript。创建一个事件监听器,如,$('button')。单击(myFunction)代码>。是的,我知道。谢谢。另外,我知道这在没有jQuery的情况下是可行的。但是OP使用了jQuery,所以我继续使用它。谢谢。没有jQuery会很好。@Justin我制作了一个(grosser)没有jQuery的版本。而且,我知道没有jQuery这是可行的。但是OP使用了jQuery,所以我继续使用它。谢谢。没有jQuery就好了。@Justin我制作了一个没有(grosser)jQuery的版本。谢谢你的旁注和信息。谢谢你的旁注和信息。