2016-02-28 77 views
1

有鉴于此:一个元素是否包含指定的字符串(纯JS)?

<p>knownString-randomString</p> 

如何找到一个文件中包含“knownString-,”只使用纯JavaScript的所有段落?

对于<p>knownString-randomString</p>的每个实例,我需要在连字符(-)处拆分“knownString-randomString”并将“randomString”存储在变量中以备将来使用。

谢谢。

回答

1
  1. 让你的元素

    var paragraphs = document.getElementsByTagName('p');

2. For循环与检查,并分割你的字符串

for(var i = 0; i < paragraphs.length; i++){ 
    if(paragraphs[i].innerHTML.search('knownString') > -1){ 
     randomString = paragraphs[i].innerHTML.split('-')[1]; 
    } 
} 

+1

你应该搜索'knownString-'...'randomString'将是随机的,所以你可能没有那个.. – Rayon

+0

改变了代码:) –

+0

这正是我所需要做的。谢谢你,菲利普! –

0

如果您的段落位于某个其他元素(div或最终的<body>)内,可以选择带有jQuery $('divID p')的段落,迭代它们并使用split()将已知和未知字符串放入数组中。 (0)将拥有你的knownString,而ArrayElement(1)将拥有你的randomString。

+0

科比,我想使用纯JavaScript解决方案。谢谢。 –

0
var randomStrings = []; 
var ps = document.querySelectorAll('p'); 
for(var i = 0; i < ps.length; i++) { 
    if(ps[i].textContent.startsWith('knownString')) { 
     randomStrings.push(ps[i].textContent.split('-')[1]); 
    } 
} 

你需要将存储在randomStrings

0
  • 转换所需的变量字符串转换为正则表达式。
  • 检索所有段落(根据需要使用querySelectorAll选择器进行修改)。
  • 遍历所有段落。
  • 对于每个段落,获取文本并用正则表达式搜索它。
  • 如果存在匹配,请将其添加到“匹配”的累积列表中。

var knownString = "knownString"; 
 
var regex = new RegExp(knownString + "\\-(.*)"); 
 
var pars = document.querySelectorAll("p"); 
 
var results = []; 
 
[].forEach.call(pars, function(par) { 
 
    var x = par.firstChild.nodeValue.match(regex); 
 
    if (x) results.push(x[1]); 
 
}); 
 
alert(results);
<p>something else</p> 
 
<p>knownString-randomString1</p> 
 
<p>knownString-randomString2</p>

1

这里有一种方法:

function FindRandomStrings() 
{ 
    var allParagraphs = document.getElementsByTagName("p"); 
    var regex = /knownString-(.*)/; 
    var result = []; 
    var match; 
    var i; 

    for (i = 0; i < allParagraphs.length; i++) 
    { 
     match = regex.exec(allParagraphs[i].innerHTML); 

     if (match) 
     { 
      result.push(match[1]); 
     } 
    } 

    return result; 
} 
相关问题