简体   繁体   English

元素是否包含指定的字符串(纯JS)?

[英]Does an element contain a specified string (pure JS)?

Given this: 鉴于这种:

<p>knownString-randomString</p>

How do I find all paragraphs in a document that contain "knownString-," using pure JavaScript only? 如何仅使用纯JavaScript查找包含“ knownString-”的文档中的所有段落?

For each instance of <p>knownString-randomString</p> , I need to split "knownString-randomString" at the hyphen( - ) and store "randomString" in a variable for later use. 对于<p>knownString-randomString</p>每个实例,我需要在连字符( - )处拆分“ knownString-randomString”,并将“ randomString”存储在变量中以备后用。

Thanks. 谢谢。

  1. Get your elements 得到你的元素

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

2. For loop with check and split your string 2. for循环检查并拆分字符串

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

Here is one way: 这是一种方法:

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;
}

If your paragraphs are inside some other element, either a div, or ultimately the <body> , you can select those with jQuery $('divID p'), iterate through them, and use split() to separate the known and unknown strings into an array. 如果您的段落位于某个其他元素(一个div或最后一个<body> ,则可以选择带有jQuery $('divID p')的那些元素,对其进行迭代,然后使用split()分隔已知字符串和未知字符串排列成一个数组。

var ArrayElement = split("knownString-randomString");

ArrayElement(0) will have your knownString, and ArrayElement(1) will have your randomString. ArrayElement(0)将具有您的knownString,而ArrayElement(1)将具有您的randomString。

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]);
    }
}

The variables you need would be stored in randomStrings 您需要的变量将存储在randomStrings

  • Convert the desired string into a regular expression. 将所需的字符串转换为正则表达式。
  • Retrieve all paragraphs (modified as desired using querySelectorAll selectors). 检索所有段落(使用querySelectorAll选择器根据需要进行修改)。
  • Iterate through all the paragraphs. 遍历所有段落。
  • For each paragraph, get the text and search it with the regular expression. 对于每个段落,获取文本并使用正则表达式进行搜索。
  • If there is a match, add it to an accumulating list of "hits". 如果有匹配项,请将其添加到“匹配”的累积列表中。

 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> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM