js 没有contains方法?提示错误

JavaScript018

js 没有contains方法?提示错误,第1张

这个是jQuery的方法;

描述: 检查一个DOM元素是另一个DOM元素的后代。

jQuery.contains( container, contained )

container

类型: Element

DOM元素作为容器,可以包含其他元素

contained

类型: Element

DOM元素,可能被其他元素所包含

如果第二个参数所提供的DOM元素是第一个参数DOM元素的后裔,那么$.contains() 方法返回true,无论是直接的子元素或者是后代元素。否则,返回false。只支持 element 节点如果第二个参数是一个文本或注释节点,$.contains()将返回 false。

在前端开发中会遇到一些非常类似的api但却有不同的英文名,比如同样表示包含,有contains/includes/has这三种。如何记住哪个是哪个呢?我整理了一些技巧 contains作为包含,出现在Element.classList.contains和Node.contains这两个api上,它们都是DOM API,也就是说在操作DOM时遇到包含那就是contains了 includes作为包含出现在Array.prototype.includes和String.prototype.includes上,即js中我们常用的数组和字符串上会用includes has作为判断包含的方法出现在Map/Set/WeakMap/WeakSet/Reflect/FormData上。可以发现与上面的includes 不同,这些has中传入的都是具有唯一性的key参数,即js中如果包含是具有唯一性的包含的话用has,否则是includes

在java中一般有两种方法较常用,分别是contains(String str)和indexOf(String str)。

其中contains返回值为boolean类型,true为有,false为没有;而indexOf实际上是查找一个字符串在另一个字符串的位置的一个方法,且以匹配好的第一个字符为准;所以该方法的返回值为int类型,其中 -1表示未找到,其余都是能找到意思。所以一般来讲,java中的判断方式如下:

String str = "abcde"

//第一种方法

if (str.contains("b")) {

    System.out.println("yes")

} else {

    System.out.println("no")

}

//第二种方法

if (str.indexOf("bc") >= 0) {

    System.out.println(str.indexOf("bc"))

    System.out.println("yes")

} else {

    System.out.println("no")

}

而在js中较为常见方法为indexOf(),返回值同java一样,为最常用的方法;随后,ES6又提供了三种新方法。includes(),返回布尔值,表示是否找到了参数字符串;startsWith(),返回布尔值,表示参数字符串是否在源字符串的头部;endsWith(),返回布尔值,表示参数字符串是否在源字符串的尾部。

var s = 'Hello world!'

if(s.indexOf('world')>=0){

    console.log('true')

}

if(s.includes('o')){

    console.log('true')

}

if(s.startsWith('Hello')){

    console.log('true')

}

if(s.endsWith('!')){

    console.log('true')

}