115.jquery有几种类型的选择器
一、基本选择器(5种)
基本选择器是jQuery中最常用也是最简单的选择器,它通过元素的id、class和标签名等来查找DOM元素。
1、ID选择器 #id
描述:根据给定的id匹配一个元素, 返回单个元素(注:在网页中,id名称不能重复)
示例:$("#test") 选取 id 为 test 的元素
2、类选择器 .class
描述:根据给定的类名匹配元素,返回元素集合
示例:$(".test") 选取所有class为test的元素
3、元素(标签)选择器 element
描述:根据给定的元素名匹配元素,返回元素集合
示例:$("p") 选取所有的<p>元素 $("div") :选取所有的div标签
4、*
描述:匹配所有元素,返回元素集合
示例:$("*") 选取所有的元素
5、selector1,selector2,...,selectorN(并集选择器)
描述:将每个选择器匹配到的元素合并后一起返回,返回合并后的元素集合
示例:$("p,span,p.myClass") 选取所有<p>,<span>和class为myClass的<p>标签的元素集合
二、层次选择器(4种)
层次选择器根据层次关系获取特定元素。
1、后代选择器
示例:$("p span") 选取<p>元素里的所有的<span>元素(注:后代选择器选择父元素所有指定选择的元素,不管是儿子级,还是孙子级)
2、子选择器 $("parent>child")
示例:$("p>span") 选择<p>元素下的所有<span>元素 (注:子选择器只选择直属于父元素的子元素)
3、兄弟选择器 $("prev+next")
描述:选取紧接在prev元素后的next元素,返回元素集合
示例:$(".one+p") 选取class为one的下一个<p>同辈元素集合
4、兄弟选择器 $("prev~siblings")
描述:选取prev元素后的所有siblings元素,返回元素集合
示例:$("#two~p")选取id为two的元素后所有<p>同辈元素集合
三、过滤选择器(5种)
1基本过滤选择器
1、 :first
描述:选取第一个元素,返回单个元素
示例:$("p:first") 选取所有<p>元素中第一个<p>元素
2、 :last
描述:选取最后一个元素,返回单个元素
示例:$("p:last") 选取所有<p>元素中最后一个<p>元素
3、 :not(selector)
描述:去除所有与给定选择器匹配的元素,返回元素集合
示例:$("input:not(.myClass)") 选取class不是myClass的<input>元素
4、 :even
描述:选取索引是偶数的所有元素,索引从0开始,返回元素集合
5、 :odd
描述:选取索引是奇数的所有元素,索引从0开始,返回元素集合
6、 :eq(index)
描述:选取索引等于index的元素,索引从0开始,返回单个元素
7、 :gt(index)
描述:选取索引大于index的元素,索引从0开始,返回元素集合
8、 :lt(index)
描述:选取索引小于于index的元素,索引从0开始,返回元素集合
9、 :focus
描述:选取当前获取焦点的元素
2、内容过滤选择器
1、:contains(text)
描述:选取含有文本内容为text的元素,返回元素集合
示例:$("p:contains('我')") 选取含有文本“我”的元素
2、:empty
描述:选取不包含子元素或者文本元素的空元素,返回元素集合
示例:$("p:empty") 选取不包含子元素或者文本元素的空<p>元素(<p></p>)
3、:has(selector)
描述:选取含有选择器所匹配的元素的元素,返回元素集合
示例:$("p:has(p)") 选取含有<p>元素的<p>元素(<p><p/></p>)
4、:parent
描述:选取含有子元素或者文本的元素,返回元素集合
示例:$("p:parent") 选取含有子元素或者文本元素的<p>元素(<p><p/></p>或者<p>文本</p>)
3、可见性过滤选择器
1、:hidden
描述:选取所有不可见的元素,返回元素集合
2、:visible
描述:选取所有可见的元素,返回元素集合
4、属性过滤选择器(返回元素集合)
1、[attribute]
示例:$("p[id]") 选取拥有id属性的p元素
2、[attribute=value]
示例:$("input[name=text]") 选取拥有name属性等于text的input元素
3、[attribute!=value]
示例:$("input[name!=text]") 选取拥有name属性不等于text的input元素
4、[attribute^=value]
示例:$("input[name^=text]") 选取拥有name属性以text开始的input元素
5、[attribute$=value]
示例:$("input[name$=text]") 选取拥有name属性以text结束的input元素
6、[attribute=value]
示例:$("input[name=text]") 选取拥有name属性含有text的input元素
7、[attribute~=value]
示例:$("input[class~=text]") 选取拥有class属性以空格分割的值中含有text的input元素
8、attribute1[attributeN]
描述:合并多个属性过滤选择器
5、表单对象属性过滤选择器(返回元素集合)
1、:enabled
描述:选取所有可用元素
2、:disabled
描述:选取所有不可用元素
3、:checked
描述:选取所有被选中的元素(单选框,复选框)
示例:$("input:checked") 选取所有被选中的<input>元素
4、:selected
描述:选取所有被选中的选项元素(下拉列表)
示例:$("select option:selected") 选取所有被选中的选项元素
四、表单选择器(返回元素集合,使用相似)
1、:text
描述:选择所有的单行文本框
示例:$(":text")选取所有的单行文本框
2、:password
描述:选择所有的密码框
3、:button
描述:选择所有的按钮
4、:checkbox
描述:选择所有的多选框
116.将两个数合并,并删除第二个元素
var array1 = ['a','b','c'];
var array2 = ['d','e','f'];
数组合并
(1)js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果。
var array = array1.concat(array2)
(2)遍历其中一个数组,把该数组中的所有元素依次添加到另外一个数组中。
for(var i in array1){
array2.push(array1[i])
}
(3)利用ES6语法
var array = [...array1,...array2]
(4)函数的apply方法有一个特性,那就是func.apply(obj,argv),argv是一个数组
调用a.push这个函数实例的apply方法,同时把,b当作参数传入,
这样a.push这个方法就会遍历b数组的所有元素,达到合并的效果。
array1.push.apply(array1,array2);
删除第二个元素
(1)array.splice(1,1)
//array.splice(1,1,5,6)表示在删除的位置添加元素5,6
(2)delete array[1]
//只会删除了第二个元素,但是在其位置会显示empty,索引不会改变
117.请写出一下数组相关方法的值
['a','b'].filter(x=>true) //['a','b']
['a','b'].every(x=>x==='a') //false
['a','b'].some(x=>x==='a') //true
[1,2].reduce((x,y)=>x+y) //3
[1,2].map(x=>x+1) //[2,3]
['a',...['a','b']] //["a", "a", "b"]
new Array(3).fill("a") //["a", "a", "a"]
['a','b','c'].findIndex(x=>x==='c') // 2
118.GET和POST的区别,何时使用POST?
1.GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符
2.POST:一般用于修改服务器上的资源,对所发送的信息没有限制。
3.GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,
也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。
4.在以下情况中,请使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
119.说说 async / await 的串行和并行
//async和await是es6中的新语法,它的诞生彻底解决了JS回调地狱的问题,在这个语法中,我们可以省去以往的promise语法中.then()的写法
加async修饰的方法有两个作用:
1.该方法中可以使用await
2.该方法需要返回一个promise
await可以出现在async修饰的方法中,他的意思表示等待异步任务的执行完毕,
await后面需要跟一个promise
比如下面的例子:
async function request1(){
let result1 = await axios("http://localhost:8888/aa")
let result2 = await axios("http://localhost:8888/bb")
}
async function request2(){
let result3 = await axios("http://localhost:8888/cc")
let result4 = await axios("http://localhost:8888/dd")
}
request1();
request2();
//此时request1() 和 request2()这两个方法是并行执行的,request1的执行并不会堵塞当前线程
//而request1中的两个请求是串行执行的,也就是先必须拿到result1的结果后才能继续获取到result2的结果
因此async/await的结合使用,可以将原来并行执行的异步任务改为串行执行,
从而彻底解决js的回调地狱的问题
120.数组求最大值 :var arr=[45,2,3,4,10,8],用es6求最大值?
var arr = [45,2,3,4,10,8];
var max = arr.reduce(function(a , b){
return b > a ? b : a;
});
console.log(max);
//reduce:让数组中的前项和后项做某种计算,并累计最终值.
121.用代码实现下面数组以num的值的大小重新排列,并返回一个新的数组
let arr = [
{num:23},
{num:100},
{num:3},
{num:56}
]
sort()方法 最简单
let arr = [
{ num: 23 },
{ num: 100 },
{ num: 3 },
{ num: 56 }
]
function compare(val1, val2) {
return val1.num - val2.num;
};
arr.sort(compare);
console.log(arr)