面试题汇总-JS篇01

面试题汇总-JS篇01,第1张

场景:var str = “hello world!”

astrchar() //返回指定下标的值

Strchar(2) //”l”

bStrindexOf() //返回指定值的下标

StrindexOf(‘e’) //’1’

cStrlastIndexOf() //返回最后指定值的下标

StrlastIndexOf(‘l’) //’9’

dStrconcat() //拼接字符串

Strconcat(“mother fuck!”) //”hello world!mother fuck!”

Consolelog(str) //”hello world!”

eStrsubstr(n,m) //从n开始截取m个字符

Strsubstr(1,2) //’el’

fStrsubstring(n,m) //从n开始m结束截取字符串,不包含m

Strsubstring(6,11) //”world”

gStrslice(n,m) //同substring,slice可以截取数组,substring不能截取数组

Strslice(6,11) //”world”

hStrsplit //返回数组

Strsplit(‘ ’) //[‘hello’, ‘world!’]

Straplit(‘l’) //[‘he’, ‘’, ‘o wor’, ‘d!’]

iStrreplace() //以下三个方法都是通过正则表达式对原字符串进行更改的

jStrmatch()

kStrsearch()

场景:const obj = {x: 0, y: 1}

Const obj2 = {x: 1, z: 2,fn: {number: 1}}

aObjectassign() //合并对象,实行的是浅拷贝

Objectassign(obj, obj2)

Consolelog(obj) //{x: 1, y: 1, z: 2,fn: {number: 1}}

bObjectcreate() //新建一个对象,可以使用原型链继承

Var newObj = Objectcreate(obj, {newValue: ‘newAdd’})

Consolelog(newObj) //{newValue: ‘newAdd’}

Consolelog(newObjx) //0

cObjectdefineProperties() //往对象里面添加或修改新属性,值类型

ObjectdefineProperties(obj, {name: {value: ‘欧’}}) //添加属性

Consolelog(obj) //{x: 0, y: 1, name: ‘欧’}

ObjectdefineProperties(obj, {name: {value: ‘林’, writable: true}}) //修改属性

Consolelog(obj) //{x: 0, y: 1, name: ‘林’}

dObjectdefineProperty() //往对象里面添加新属性,可以是引用类型

ObjectdefineProperty(obj, ‘name’, {value: function() {return ‘欧’}})

Consolelog(objname()) //’欧’

eObjectkeys() //返回对象所有key,以数组类型输出

Consolelog(Objectkeys(obj)) //[‘x’, ‘y’]

fObjectvalues() //返回对象所有的value,以数组类型输出

Consolelog(Objectvalues(obj)) //[0, 1]

场景:var arr = new array(1,2,3)

apush() //向数组尾部添加元素

arrpush(4)

consolelog(arr) //[1,2,3,4]

bunshift() //向数组头部添加元素

arrunshift(0)

consolelog(arr) //[0,1,2,3]

cpop() //删除数组尾部的元素

arrpop()

consolelog(arr) //[1,2]

dshift() //删除数组头部的元素

arrshift()

consolelog(arr) //[2,3]

eindexOf() //返回指定元素的下标

arrindexOf(2) //1

fslice(n,m) //从n开始m结束截取数组,不包括m,此方法不会更改元数组

consolelog(arrslice(1,2)) // [2]

consolelog(arr) //[1,2,3]

gsplice() //删除数组指定元素

arrsplice(1) //删除从下标1开始到最后的所有元素

consolelog(arr) //[1]

arrsplice(1,2) //删除从下标1开始往后的2个元素

consolelog(arr) //[1]

arrsplice(1,2,3,4) //删除从下标1开始往后2个元素并用3,4替代

consolelog(arr) //[1,3,4]

hreverse() //数组翻转

arrreverse()

consolelog(arr) //[3,2,1]

isort() //从小到大排序数组

arrsort()

consolelog(arr) //[1,2,3]

jforEach() //以下提供了几种遍历的方法

kmap()

lfilter() //数组过滤,如果数组的元素的对象,可以通过对象的属性名来过滤元素,用法跟C#的Linq一样。

var newArr = [{id:1,name:’元素1’},{id:2,name:’元素2’}]

consolelog(newArrfilter(item => itemid===1)) //[{id:1,name:’元素1’}]

consolelog(newArr) //[{id:1,name:’元素1’},{id:2,name:’元素2’}]

mevery()

nsome()

ofind()

pfindIndex()

增删改查

场景:<div class=”div” id=”div”></div>

adocumentcreateElement() //创建节点

var newDiv = documentcreateElement()

bdocumentcraeteTextNode() //创建文本节点

var newDivText = documentcraeteTextNode(‘这是新创建的节点’)

cdivappendChild() //向节点添加最后一个子节点

newDivappendChild(newDivText)

ddocumentgetElementById() //通过Id获取节点

var div = documentgetElementById(‘div’)

edivparentNode //获取父节点

fdivchildNode //获取子节点,返回一个集合

var child = divchildNodes

gdivnextSibling,divpreviousSibling,divfirstChild,divlastChild

分别为,获取下一个兄弟节点,上一个兄弟节点,第一个子节点,最后一个子节点。

hdivinsetBefore() //插入到特定位置

divinsetBefore(newDiv, null) //插入到最后,跟appendchild用法一样

divinsetBefore(newDiv, divfirstChild) //插入到第一个子节点之前

divinsetBefore(newDiv, divlastChild) //插入到最后节点之前

idivreplaceChild() //替换节点

divreplaceChild(newDiv, divfirstChild) //替换第一个子节点,原节点会被删除

jdivremoveChild() //删除子节点

kcloneNode(true/false) //克隆节点,true为深克隆,false为浅克隆

ldocumentquerySelector(),documentquerySelectorAll() //通过css选择器搜索匹配的节点,querySelector返回匹配的第一个节点,querySelectorAll返回所有节点

documentquerySelector(‘divdiv’) //返回class为div的div标签节点

documentquerySelector(‘#div’) //返回id为div的节点

mdocumentgetElementsByTagName(),documentgetElementsByName(),documentgetElementsByClassName() //返回符合需求的集合

ndivsetAttribute() //给元素添加属性

divsetAttribute(‘name’: ‘div’)

oremoveAttribute(),getAttribute(),hasAttribute() //各种 *** 作属性的方法

节点至少拥有nodeType(节点类型),nodeName(节点名称),nodeValue(节点值)三个基础属性

(1)元素节点---nodeType为1

(2)属性节点---nodeName为2

(3)文本节点---nodeValue为3 (文本节点包含文字、空格、换行等)

2、节点的层级

DOM根据HTML中各节点的不同作用,可将其分别划分为标签节点(元素节点)、文本节点和属性节点

(1)根节点:<html>就是根节点,有且只有一个

(2)父节点:一个节点的上级节点

(3)子节点:一个节点的下级节点

(4)兄弟节点:具有相同父节点的节点

二、节点 *** 作

1、获取父节点

elementparentNode

2、获取子节点

(1)elementchildNodes:获得的是当前元素的所有子节点的集合(所有类型的子节点)

(2)elementchildren:是一个可读的属性,返回所有子元素节点

(3)firstChild:获取第一个子节点

(4)lastChild:获取最后一个子节点

(5)firstElementChild:获取第一个元素子节点

(6)lastElementChild:获取最后一个子元素节点

3、获取兄弟节点

(1)nextSibling:获取下一个兄弟节点

(2)previousSibling:获取上一个兄弟节点

(3)nextElementSibling:获取下一个兄弟元素(标签)节点

(4)previousElementSibling:获取前一个兄弟元素节点

<body>

<div class="demo">

<div class="box">

<h2>一二三四五</h2>

<span class="child">上山打老虎</span>

<p>注意!(保护国家保护动物)</p>

</div>

</div>

<div>

<ul>

<li id="l1">红楼梦</li>

<li>水浒传</li>

<li>三国演义</li>

<li>西游记</li>

</ul>

</div>

<script>

var child = documentquerySelector('child')

consolelog(childparentNode);

var ul = documentquerySelector('ul');

var lis = ulquerySelectorAll('li');

consolelog(lis);

consolelog("通过childNodes获得的子节点",ulchildNodes);

consolelog("children",ulchildren);

consolelog("ul的子节点",ulchildNodes);

consolelog("ul第一个子节点的类型:",ulchildNodes[0]nodeType);

consolelog("ul的第二个字节点类型:",ulchildNodes[1]nodeType);//1是元素,也叫标签

consolelog("ul的第一个子节点",ulfirstChild);

consolelog("ul的最后一个子节点:",ullastChild);

consolelog("ul的第一个子元素节点",ulfirstElementChild)

consolelog("ul的最后一个子元素节点",ullastElementChild)

var span = documentquerySelector('child');

consolelog("span的兄弟节点",spannextSiblingnextSibling)

consolelog("span的前一个兄弟节点",spanpreviousElementSibling)

</script>

</body>

登录后复制

4、创建节点

(1)doumentwrite():若页面加载完毕,再次调用该方法导致页面重绘

(2)elementinnerHTML:将节点加入到元素中,导致页面部分重绘

(3)documentcreateElement():创建节点结构清晰、效率不高

5、添加和删除节点

(1)appendChild():将节点添加到指定父节点的已有子节点的末尾

(2)insertBefore():将节点添加到指定父节点的已有子节点的前面

(3)removeChild(child):删除一个指定的节点。返回值为删除的节点

6、克隆节点

cloneNode(true/false):复制节点

(1)true:深拷贝,复制节点本身和所有子节点

(2)false(或空):浅拷贝,只复制节点本身

//获取指定节点的前一个兄弟节点

var id = documentgetElementById('mi');

consolelog(idpreviousElementSibling);//<li>苹果</li>

//获取指定节点的后一个兄弟节点

consolelog(idnextElementSibling);//<li>华为</li>

发现答非所问的人还不少啊

取父窗口的元素方法:$(selector, windowparentdocument);

那么你取父窗口的父窗口的元素就可以用:$(selector, windowparentparentdocument);

类似的,取其它窗口的方法大同小异

$(selector, windowtopdocument);

$(selector, windowopenerdocument);

$(selector, windowtopframes[0]document);

希望对你能有帮助

1)一共12个节点类型

2)dom *** 作就是对节点进行 *** 作

3)节点的类型的获取方法notetype

4)ie9以上及chrome safari firefox 会将换行符当成节点

(1)静态获取

(2)返回带有指定ID的元素

var box1=documentgetElementById('box');

(1)根据标签名获取

(2)得到的是个数组

var div1=documentgetElementsByTagName('div')[0];

(1)根据类名获取元素

(2)动态获取

(3)得到的是一个数组

var box=documentgetElementsByClassName('box')[0];

(1)返回符合要求第一个元素

(2)通过css选择器来获取指定标签

(3)静态获取

(1)返回所有匹配元素

(2)根据css选择器来获取所有标签

(3)得到的是一个数组

获取兄弟节点

获取下一个兄弟标签

获取上一个兄弟节点

获取上一个兄弟标签

获取最后一个子节点

获取最后一个子标签

获取所有非标签类型的子节点

获取所有子标签节点

获取父节点

增加节点

var div=documentcreateElement('div');

在父元素的末尾,插入节点

在添加元素前,需要将元素先创建好

divappendChild(div);

修改指定子节点

删除指定子节点

在删除前需要先获取到被删除元素

divremoveChild(box);

删除当前节点

需要先获取到被删除的节点

divremove();

(1)设置ID

divid='box';

(2)设置class

divclassName='box';

(3)设置style

divstylewidth='10px';

(4)设置路径

imgsrc='/';

(5)自定义属性

<div id="div1">

<p id="p1">这是一个段落。</p>

<p id="p2">这是另一个段落。</p>

</div>

<script>

var para=documentcreateElement("p");

var node=documentcreateTextNode("这是一个新段落。");

paraappendChild(node);

var element=documentgetElementById("div1");

elementappendChild(para);

</script>

这段代码创建新的<p> 元素:

var para=documentcreateElement("p");

如需向 <p> 元素添加文本,您必须首先创建文本节点。这段代码创建了一个文本节点:

var node=documentcreateTextNode("这是一个新段落。");

然后您必须向 <p> 元素追加这个文本节点:

paraappendChild(node);

最后您必须向一个已有的元素追加这个新元素。

这段代码找到一个已有的元素:

var element=documentgetElementById("div1");

以下代码在已存在的元素后添加新元素:

elementappendChild(para);

在获取到父节点的情况下 var parentNode =

多次执行parentNodeappendChild(已经创建好的子节点);即可多次添加子节点

以上就是关于面试题汇总-JS篇01全部的内容,包括:面试题汇总-JS篇01、javascript如何表示根节点、js取父节点的兄弟节点的某个子元素怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9746298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存