javascript如何检查网页元素是不是包含某个特定字符串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript如何检查网页元素是不是包含某个特定字符串?相关的知识,希望对你有一定的参考价值。

示例如下:
<div id=ooo></div>
<script>
function check()

document.getElementById("ooo")="sdkjflksajlkfslkfjs......"
'这里如何判断"id=ooo"中是否包含"XXX"等某个指定字符或字符串呢?

或者说是html元素?

例程有错,应为:document.getElementById("ooo").innerHTML="sdkjflksajlkfslkfjs......"

注意这不是一般的字符串检查,也不是表单检查.

并且不能简单地对字符串进行检查,而是一定要检查这个id的值是否包含这些字符串才行.

我记得Jscript中有个函数,叫:indexOf
这个函数返回某个字符串中制定的字符串的位置。如果返回值0的话说明目标字符串中没有包含制定的字符串。
比如:
var str1 ="abcdefg";
var str2="99"
var rValue=atr1.indexOf(str2)
if (rValue==0) then
alert("不包含字符串!");
else
alert("str1中包含str2,并且位置为:"+rValue);
参考技术A indexOf 方法
返回 String 对象内第一次出现子字符串的字符位置。

strObj.indexOf(subString[, startIndex])

参数
strObj

必选项。String 对象或文字。

subString

必选项。要在 String 对象中查找的子字符串。

starIndex

可选项。该整数值指出在 String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。

说明
indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。

如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。

从左向右执行查找。否则,该方法与 lastIndexOf 相同。

示例
下面的示例说明了 indexOf 方法的用法。

function IndexDemo(str2)
var str1 = "BABEBIBOBUBABEBIBOBU"
var s = str1.indexOf(str2);
return(s);
参考技术B 要检查的话用正则表达式吧 参考技术C function check(CheckStr)

var str;
str=document.getElementById("ooo").innerHTML;
if(str.indexOf(CheckStr)==-1)
return false;
else
return ture;
本回答被提问者采纳

如何检查数组是不是包含Javascript中的字符串?

【中文标题】如何检查数组是不是包含Javascript中的字符串?【英文标题】:How to check an array if it contains a string in Javascript?如何检查数组是否包含Javascript中的字符串? 【发布时间】:2013-07-10 12:19:37 【问题描述】:

我有一个包含字符串的数组。

var js_userBoxName = new Array();

如果字符串包含应该显示的单词“foo”,我想搜索数组的元素。

例如,我的数组包含单词 fooofy, foofa, foo, awtsy,将显示 foofy、foofa 和 foo,因为它们都包含单词 foo。

【问题讨论】:

***.com/questions/784012/… 这有帮助吗? 是您遇到问题的字符串解剖数组的迭代吗?你试过什么? Array.filter 【参考方案1】:

查看Array.filter 方法:

var arr = ['foofy', 'foofa', 'foo', 'awtsy'];
var fooItems = arr.filter(function (item) 
    return item.indexOf('foo') >= 0;
);

// Yields ['foofy', 'foofa', 'foo']

链接的 MDN 页面包含一个针对不支持它的浏览器的 polyfill。如果你碰巧在使用 jQuery,你可以使用$.grep:

var arr = ['foofy', 'foofa', 'foo', 'awtsy'];
var fooItems = $.grep(arr, function (item) 
    return item.indexOf('foo') >= 0;
);

【讨论】:

如果需要支持 IE 【参考方案2】:

注意:良好的性能提示是在迭代数组时始终缓存数组的长度,而不是在每次循环执行时重新计算它。 len = js_userBoxName.length

http://jsperf.com/caching-array-length/4

function () 
    for(var i = 0, len = js_userBoxName.length; i < len; i++)
      if(typeof js_userBoxName[i] === 'string')
        if(js_userBoxName[i].indexOf('foo') == -1)
          return true;
      
    
    return false;

【讨论】:

+1 用于缓存array.length和类型检查,检查indexOf的返回值时也应该使用=== -1 刚刚注意到 === 和 == 一样吗 它被称为“严格等于”,对于实际对象(不是字符串或数字等简单类型),它比较“实例”相等性(即,此对象与此对象是否完全相同)并且被一些人认为是最佳实践。查看更多信息:impressivewebs.com/why-use-triple-equals-javascipt【参考方案3】:

以下应该有效:

var myArray = ['foofy', 'foofa', 'foo', 'awtsy'];

for ( var i = 0; i < myArray.length; i++ ) 
  if ( myArray[i].contains('foo') )
    console.log(myArray[i]);

打印: 笨蛋 福发 呵呵

注意:“awtsy”不包含模式 foo

【讨论】:

这会显示 foofy 和 foofa 还是只显示 foo?...抱歉,我现在没有电脑,所以无法尝试... 它将返回所有包含单词 foo 的数组字符串元素。在这种情况下:foofy、foofa 和 foo【参考方案4】:

下面的函数应该可以解决问题,它只使用标准的 acme 脚本元素

function Find (myarray, searchterm)
    for (var i=0, len = myarray.length; i<len; i += 1)
         if (typeof(myarray[i]) === 'string' && myarray[i].search(searchterm) !== -1)
             // print or whatever
             //hint use a callback here that you pass in as an additional arugment
         
    

如果您需要检查更复杂的内容,使用搜索允许您使用正则表达式

【讨论】:

【参考方案5】:

你也可以试试这个:

var myarray = ["foofy", "foofa", "foo", "awtsy"];
var searched_string = "foo"; 
var foundmatch = [];

for(i=0; i < myarray.length; i++)
  if(myarray[i].match(searched_string))
    foundmatch.push(myarray[i]);
  
 

alert(foundmatch); 

【讨论】:

所有答案中最简单的。谢谢!

以上是关于javascript如何检查网页元素是不是包含某个特定字符串?的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎么判断是不是有某个元素

Javascript - 检查 div 是不是包含一个单词?

检查一个数组是不是包含 JavaScript 中另一个数组的任何元素

检查一个数组是不是包含 JavaScript 中另一个数组的任何元素

使用Javascript检查JSON对象是不是包含值[重复]

如何检查网页元素是不是可见