有如下树形结构:RT-ST-SST-SSST共四层,RT是根节点,往后依次是一代子节点,二代子节点,三代子节点。 如何根据当前节点的id,获得其子节点呢?这是一个SQL问题。...加入传入的id为1(即根节点),使用自连+SUBSTRING_INDEX函数得到其子节点: 示例: id name type url 1 大树 RT root...tree_node(name, type, url) values('树叶3', 'SSST', 'root/tree_main_line2/tree_branche3/tree_leaf3'); 查看刚刚插入的数据...为1(即根节点),使用自连+SUBSTRING_INDEX函数得到其子节点: mysql> select tree1.* from tree_node as tree1 -> join tree_node...url and (length(tree1.url) - length(replace(tree1.url, '/', ''))) = 1 where tree2.id = 1; ##返回"树干1"的父节点的
前言 如何查找和访问 HTML 页面中的节点元素?也就是我们经常说的定位元素的一些方法。...查询 HTML 节点(元素)一些方法 查找 html 页面上的元素,可以用以下方法 方法 节点类型 getElementById() 通过 id 查找 HTML 元素 getElementsByClassName...,其它都是查找到的元素集合(相当于一个数组) getElementById() 通过 id 查找 HTML 元素 ,使用语法 document.getElementById("id属性") 示例 回空的[]。...,如果查找不到返回null 当页面上有多个元素属性一样的时候,此时会返回第一个元素 DOM 节点 Hello
NodeList 对象是一个从文档中获取的节点列表 (集合) 。 NodeList 对象类似 HTMLCollection 对象。...; 实例解析 获取 元素的集合: var myNodelist = document.querySelectorAll("p"); 显示节点列表的元素个数: document.getElementById...实例 修改节点列表中所有 元素的背景颜色: var myNodelist = document.querySelectorAll("p"); var i; for (i = 0; i 节点和文本节点。 节点列表不是一个数组! 节点列表看起来可能是一个数组,但其实不是。 你可以像数组一样,使用索引来获取元素。...节点列表无法使用数组的方法: valueOf(), pop(), push(), 或 join() 。
HTML集合(HTML Collection)是元素节点的集合由 'getElementsByClassName' 和 'getElementsByTagName' 返回包含所有类型的节点:元素节点、文本节点等节点列表...(NodeList)包含所有类型的节点:元素节点、文本节点等由 'querySelectorAll' 返回通过 querySelectorAll 返回的节点列表是静态的。...静态意味着如果添加、删除或修改与查询匹配的更多项目,它不会更新。但这并不意味着更新节点列表内项目的属性不会被反映出来。...pEls = document.querySelectorAll('p')console.log(pEls) // {p, p , p}document.querySelector('html').appendChild...(document.createElement('p'))console.log(pEls) // {p, p , p}所以它没有被添加到节点列表中,但如果我们使用 getElementsByTagName
昨天听说了zepto.js,正好最近也比较闲,所以就学习一下这个著名DOM操作库,由于本人刚接触这个,但又不想单纯的说如何使用,所以本人会按照API顺序来说明方法如何使用并试着将对于源码的理解写上来;...$(): 与jQuery的$()几乎一样,但zepto的选择器是直接使用的原生querySelectorAll(),所以,一些jQuery自定义的选择器是不支持的,但可以添加selector.js...接下来是一个令我凌乱的方法调用。。。(为何人家就是这么叼???) 通过$.each循环父容器的所有子节点,然后remove该节点,而dom.removeChild()会返回该节点。...; qsa(querySelectorAll的缩写); ? ? ...直接返回空数组(任性~); 但如果满足条件了,继续进行判断,选择器为不包含子选择器的(get√),并且不是通过ID选择的(get√),而且支持getElementsByClassName的(
从上到下打印二叉树 I 题目描述 :从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。...算法流程: 特例处理: 当树的根节点为空,则直接返回空列表 [] ; 初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [root] ; BFS 循环: 当队列 queue...为空时跳出; 出队: 队首元素出队,记为 node; 打印: 将 node.val 添加至列表 tmp 尾部; 添加子节点: 若 node 的左(右)子节点不为空,则将左(右)子节点加入队列 queue...空间复杂度 O(N) :最差情况下,即当树为平衡二叉树时,最多有 N/2 个树节点同时在 queue 中,使用 O(N) 大小的额外空间。...* poll 移除并返问队列头部的元素 如果队列为空,则返回null * peek 返回队列头部的元素 如果队列为空,则返回null * put 添加一个元素 如果队列满,则阻塞 * take 移除并返回队列头部的元素
子节点 (Child Node): 被当前节点包含的节点。 兄弟节点 (Sibling Node): 与当前节点拥有相同父节点的节点。 三、如何使用 JavaScript 操作 DOM?...p 元素 querySelectorAll(): 通过 CSS 选择器获取所有匹配的元素集合 (NodeList)。...let newParagraph = document.createElement("p"); appendChild(): 将新元素添加到父元素的子节点列表末尾。...innerHTML 的安全风险: 使用 innerHTML 容易受到 XSS 攻击,需要谨慎使用,并进行必要的安全过滤。...它首先通过 querySelectorAll 获取所有的列表项,并为每个列表项添加点击事件处理程序。当列表项被点击时,会弹出一个警告框显示点击的是哪个列表项。
var queryLists = con.querySelectorAll('li'); // 通过jQuery获取li元素 var jqLists = $('#con...先看如下解释,自然就明白了~~~ querySelectorAll与getElementsBy系列的区别 querySelectorAll 返回的是一个 Static Node List,而 getElementsBy...系列的返回的是一个 Live Node List。...Static Node List:静态的节点列表,如何理解静态呢?也就是一个快照。对文档的任何操作都不会产生影响。 Live Node List:动态的节点列表。...每一次调用这种列表时(如上为:domLists这个变量)都会重复对文档进行查询。 so,答案是多少你知道了吗?jQuery选择器的原理又是什么你应该也能推算出来了吧~?
AngularJs是不直接操作DOM的,但是在平时的开发当中,我们有的时候还是需要操作一些DOM的,如果使用原生的JS的话操作过于麻烦,所以大家一般都是使用jQuery,jQuery虽然好用,但是AngularJs...是不建议和JQuery同时使用的,所以AngularJs给我们也提供了一些操作DOM的方法———Jqlite 查阅官方提供的api,可以看到使用方法是angular.element(ele)...1.querySelector和querySelectorAll 是W3C提供的 新的查询接口,其主要特点如下: ①、querySelector只返回匹配的第一个元素,如果没有匹配项,返回null。 ...②、querySelectorAll返回匹配的元素集合,如果没有匹配项,返回空的nodelist(节点数组)。 ③、返回的结果是静态的,之后对document结构的改变不会影响到之前取到的结果。 ...data()-在匹配元素上存储任意相关数据 detach()-从DOM中去掉所有匹配的元素 empty()-从DOM中移除集合中匹配元素的所有子节点 eq()-减少匹配元素的集合为指定的索引的哪一个元素
与其他 DOM 集合类似,DOMTokenList 有一个表示自己包含多少元素的 length 属性,而要取得每个元素可以使用 item() 方法,也可以使用方括号语法。...,否则返回 false remove(value): 从列表中删除给定的字符串 toggle(value): 如果列表中已经存在给定的值,删除它,如果列表中没有给定的值,添加它 //删除"disabled...要引用文档的 head 元素,可以结合使用这个属性和另一种后备方法。...相对而言,使用插入标记的技术,直接插入 HTML 字符串不仅更简单,速度也更快。...innerHTML 属性返回与调用元素的所有子节点(包括元素、注释和文本节点)对应的 HTML 标记 outerHTML 属性返回调用它的元素及所有子节点的 HTML 标签 scrollIntoView
根据该问题下的答案 querySelectorAll 方法相比 getElementsBy 系列方法有什么区别?...从返回值角度来看,querySelectorAll 返回的是不变的结点列表,而 getElementsBy 系列返回的是动态的结点列表。...lis 是一个动态的结点列表, 每一次调用 lis 都会重新对文档进行查询,导致无限循环的问题。...而 Demo 1 中的 lis 是一个静态的结点列表,是一个 li 集合的快照,对文档的任何操作都不会对其产生影响。...HTMLCollection 三、NodeList 与 HTMLCollection 区别: HTMLCollection 是元素集合而 NodeList 是节点集合(即可以包含元素,文本节点,以及注释等等
NodeList 对象代表一个有顺序的节点列表 以下方法获取的为element 元素对象 document.getElementById(“id属性”) document.querySelector(‘...| 以下方法获取的为NodeList对象 document.getElementsByName(“name名称”) document.querySelectorAll(“css选择器”) element.childNodes...你可以像数组一样,使用索引来获取元素。 HTMLCollection 无法使用数组的方法:valueOf(), pop(), push(), 或 join() NodeList节点列表不是一个数组!...NodeList节点列表看起来可能是一个数组,但其实不是。 你可以像数组一样,使用索引来获取元素。...节点列表无法使用数组的方法:valueOf(), pop(), push(), 或 join() 。 2022年第 11 期《python接口web自动化+测试开发》课程,6月5号开学!
最终的导航应该是一个树形结构,并且每一个节点对应一个插入的锚点,即每一个树节点应该包含一个锚点信息。 2、实现思路 因为项目是采用Vue来实现,数据控制视图,所以通常不需要直接操作DOM。...于是可以写一个指令,通过需求分析,大体确定可以这个指令值可以绑定的一个包含以下三个信息的对象: 一个列表selectors:列表中的每一项是一层导航对应的选择器,比如下标为0的元素是第一级导航,通常可以用选择器...这里用到一个非常重要的函数querySelectorAll,它会根据调用的根节点遍历该节点的子DOM树,返回符合某个选择器的NodeList(一个类数组的对象,但不是数组!)...,而且遍历方式就是上文所述的深度优先先序遍历!真是激动人心!接下来我们可以用这个元素获取所有需要导航的元素列表。...3、生成树形导航数据函数 通过传入的导航元素DOM根节点、导航元素选择器列表、导航元素排除选择器,返回一个树形数据的列表list。
没错,今天介绍的querySelector和querySelectorAll就是可以直接使用CSS选择器一样的写法的方法。...,直接使用CSS选择器去筛选节点,这样DOM操作就变得更加便捷了。...一样,querySelector返回的是单独的一个节点,而querySelectorAll返回的是一个节点集合,换句话说就是querySelectorAll返回的是一个节点对象的数组。...其实他们并不一样,querySelectorAll更像是jQuery的选择器,获取到的节点都是静态的,而getElementsByTagName获取到的节点是动态的 静态节点和动态节点的理解:静态和动态可以这么理解...3、第三个先用querySeletcor找到id为my-id的节点,然后再使用querySelectorAll找"div div"这种结构,然而这里得到的并非是1,而是3,为什么会是3,这里就是querySelectorAll
它表示文档的结构,并将页面连接到编程语言。它的结构是一个逻辑树。每个分支结束于一个节点,每个节点包含子节点、对象。DOM API非常庞大,在本文中,咱们只讨论比较常用有有用的那些API。...document.querySelector / document.querySelectorAll document.querySelector方法返回文档中与指定选择器或选择器组匹配的第一个 html...document.querySelectorAll 方法返回与指定的选择器组匹配的文档中的元素列表 (使用深度优先的先序遍历文档的节点)。返回的对象是 NodeList 。...Node.appendChild Node.appendChild()方法将节点添加到给定父节点的子节点列表的末尾。 请注意,如果给定的子代是文档中现有节点的引用,则它将移动到新位置。...它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素。这避免了额外的序列化步骤,使其比直接innerHTML操作更快。
最近开始接触纸片人,有时候想把一个文件夹里面的剧集加到播放列表,几十个视频一个个添加显然是一件很麻烦的事情。...对于我目前面临的这个问题,抽象来说,是一种列表数据的处理,所以关键是一个列表的数据结构。...JavaScript 本身的列表对象也提供了体现函数式思想的 API,对于列表类型 Array 本身也封装了“三板斧”里面涉及到的方法: ? 于是整个过程也可以按照这个思路进行: 1....拿到数据源的列表 这里通过浏览器的 Selector API 将 DOM 中所有的链接元素提取出来,由于 document.querySelectorAll 方法返回的对象不是Array 数组类型,所以这里通过...将链接元素映射为链接字符串 这里的数组的元素全都是 DOM 中的链接元素节点,但我要的是字符串,所以这里需要通过映射(map)的方式把元素转为链接,链接在这里表现为 a 元素的 href 属性。
例如,如果我编写一个Angular库并想在我的Vue应用程序中使用我的Angular下拉列表,目前还无法直接做到。...Custom Elements Custom Elements API允许我们自定义HTML节点并添加行为给这些节点。使用Custom Elements API,我们还可以扩展原生HTML节点。...首先我们声明一个新的template节点。使用document.createElement('template');我们可以定义一个独立的原生HTML template。...使用我们的公共的 value getter方法,我们可以动态设置计数器的值。例如,我们获得对节点的引用,像其他HTML节点一样与它进行交互。...首先是我们希望在更改时收到通知的特性列表。这是Web Components所需的性能优化。
//querySelector(selector)-根据标签选择器selector选择对应的标签,但是该操作只会返回满足条件的第一个节点 //querySelectorAll(selector...(参数列表)完成调用,注意函数指定在调用时函数内部的代码才会执行!...querySelector 和 querySelectorAll 的区别?...答:querySelector 根据指定的选择器获取第一个满足条件的元素节点, 返回结果是一个元素节点类型 querySelectorAll 根据指定的选择器获取满足条件的所有元素节点,返 回结果是一个数组类型...--根据指定的选择器获取第一个满足条件的元 素节点 document.querySelectorAll 根据指定的选择器获取满足条件的所有元 素节点 8、常用的元素节点属性有哪些?
当你滚动页面时,pageX 的值会改变,因为它考虑了滚动的距离。 简而言之,就是要不要考虑滚动条的问题,如果你想要获取鼠标指针相对于整个页面的位置,应该使用 pageX。...交换元素的过程,咱们也可以单独写一个函数,如下: // 交换两个相邻的元素位置 function swap(nodeA, nodeB) { // 获取父节点,为后续插入提供一个支点 const...nodeA : nodeA.nextSibling; // 将A节点移动到参照节点之前 nodeB.parentNode.insertBefore(nodeA, nodeB); // 将B节点移动到参照节点之前...这里咱们就要换个思路了,在要开始拖动时,动态创建一个纵向的列表,列表的每一子项就是表格的列,其实就是将表格转成我们上面已经讲过的列表拖动来进行操作;然后隐藏原表格,操作这个新列表,当拖动结束的时候,我们再通过列表的索引信息来交换表格的格子就行啦...list.parentNode.removeChild(list); // 将列表的信息同步到原表格中 table.querySelectorAll('tr').forEach(row =
操作 className addClass 给元素增加 class,使用 classList 属性,该属性返回的是 DOMTokenList 对象,对象有一个 add 方法可添加 class,如果没有这个属性那么使用...insertBefore 在元素前面插入新的元素,直接使用 insertBefore 即可,注意要在 parentNode 上调用,refEl 代表参照节点 function insertBefore(...为 ELEMENT_NODE 的节点,使用 next/prevElementSibling 兼容性需要递归调用 next/prevSibling function elementSibling(el,...(ifDeep) } forEach 根据 css Selector 获取元素列表并对每个元素触发回调函数 function forEach(selector, cb) { [...document.querySelectorAll...[...document.querySelectorAll(selector)].filter(cb) } matchSelector 检查元素是否与是 selector 选中的元素 function