首页
学习
活动
专区
圈层
工具
发布

【MySQL基础】MySql如何根据输入的id获得树形结构的子节点列表:使用自连+SUBSTRING_INDEX函数

有如下树形结构: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"的父节点的

2.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HTML 集合与 NodeList

    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

    40800

    学习zepto.js(Hello World)

    昨天听说了zepto.js,正好最近也比较闲,所以就学习一下这个著名DOM操作库,由于本人刚接触这个,但又不想单纯的说如何使用,所以本人会按照API顺序来说明方法如何使用并试着将对于源码的理解写上来;...$():   与jQuery的$()几乎一样,但zepto的选择器是直接使用的原生querySelectorAll(),所以,一些jQuery自定义的选择器是不支持的,但可以添加selector.js...接下来是一个令我凌乱的方法调用。。。(为何人家就是这么叼???)   通过$.each循环父容器的所有子节点,然后remove该节点,而dom.removeChild()会返回该节点。...;   qsa(querySelectorAll的缩写); ? ?   ...直接返回空数组(任性~);       但如果满足条件了,继续进行判断,选择器为不包含子选择器的(get√),并且不是通过ID选择的(get√),而且支持getElementsByClassName的(

    4.1K80

    剑指offer | 面试题25:从上到下打印二叉树

    从上到下打印二叉树 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 移除并返回队列头部的元素

    1.1K30

    angularJS的DOM操作

    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()-减少匹配元素的集合为指定的索引的哪一个元素

    1.4K10

    JavaScript(十一)

    与其他 DOM 集合类似,DOMTokenList 有一个表示自己包含多少元素的 length 属性,而要取得每个元素可以使用 item() 方法,也可以使用方括号语法。...,否则返回 false remove(value): 从列表中删除给定的字符串 toggle(value): 如果列表中已经存在给定的值,删除它,如果列表中没有给定的值,添加它 //删除"disabled...要引用文档的 head 元素,可以结合使用这个属性和另一种后备方法。...相对而言,使用插入标记的技术,直接插入 HTML 字符串不仅更简单,速度也更快。...innerHTML 属性返回与调用元素的所有子节点(包括元素、注释和文本节点)对应的 HTML 标记 outerHTML 属性返回调用它的元素及所有子节点的 HTML 标签 scrollIntoView

    1.1K10

    JavaScript 学习-28.元素与节点(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.4K21

    文章页面目录自动生成方案

    最终的导航应该是一个树形结构,并且每一个节点对应一个插入的锚点,即每一个树节点应该包含一个锚点信息。 2、实现思路 因为项目是采用Vue来实现,数据控制视图,所以通常不需要直接操作DOM。...于是可以写一个指令,通过需求分析,大体确定可以这个指令值可以绑定的一个包含以下三个信息的对象: 一个列表selectors:列表中的每一项是一层导航对应的选择器,比如下标为0的元素是第一级导航,通常可以用选择器...这里用到一个非常重要的函数querySelectorAll,它会根据调用的根节点遍历该节点的子DOM树,返回符合某个选择器的NodeList(一个类数组的对象,但不是数组!)...,而且遍历方式就是上文所述的深度优先先序遍历!真是激动人心!接下来我们可以用这个元素获取所有需要导航的元素列表。...3、生成树形导航数据函数 通过传入的导航元素DOM根节点、导航元素选择器列表、导航元素排除选择器,返回一个树形数据的列表list。

    1.6K10

    querySelector与querySelectorAll

    没错,今天介绍的querySelector和querySelectorAll就是可以直接使用CSS选择器一样的写法的方法。...,直接使用CSS选择器去筛选节点,这样DOM操作就变得更加便捷了。...一样,querySelector返回的是单独的一个节点,而querySelectorAll返回的是一个节点集合,换句话说就是querySelectorAll返回的是一个节点对象的数组。...其实他们并不一样,querySelectorAll更像是jQuery的选择器,获取到的节点都是静态的,而getElementsByTagName获取到的节点是动态的 静态节点和动态节点的理解:静态和动态可以这么理解...3、第三个先用querySeletcor找到id为my-id的节点,然后再使用querySelectorAll找"div div"这种结构,然而这里得到的并非是1,而是3,为什么会是3,这里就是querySelectorAll

    1.6K70

    13个需要知道的方法:使用 JavaScript 来操作 DOM

    它表示文档的结构,并将页面连接到编程语言。它的结构是一个逻辑树。每个分支结束于一个节点,每个节点包含子节点、对象。DOM API非常庞大,在本文中,咱们只讨论比较常用有有用的那些API。...document.querySelector / document.querySelectorAll document.querySelector方法返回文档中与指定选择器或选择器组匹配的第一个 html...document.querySelectorAll 方法返回与指定的选择器组匹配的文档中的元素列表 (使用深度优先的先序遍历文档的节点)。返回的对象是 NodeList 。...Node.appendChild Node.appendChild()方法将节点添加到给定父节点的子节点列表的末尾。 请注意,如果给定的子代是文档中现有节点的引用,则它将移动到新位置。...它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素。这避免了额外的序列化步骤,使其比直接innerHTML操作更快。

    97820

    在网页中提取链接的“三板斧”

    最近开始接触纸片人,有时候想把一个文件夹里面的剧集加到播放列表,几十个视频一个个添加显然是一件很麻烦的事情。...对于我目前面临的这个问题,抽象来说,是一种列表数据的处理,所以关键是一个列表的数据结构。...JavaScript 本身的列表对象也提供了体现函数式思想的 API,对于列表类型 Array 本身也封装了“三板斧”里面涉及到的方法: ? 于是整个过程也可以按照这个思路进行: 1....拿到数据源的列表 这里通过浏览器的 Selector API 将 DOM 中所有的链接元素提取出来,由于 document.querySelectorAll 方法返回的对象不是Array 数组类型,所以这里通过...将链接元素映射为链接字符串 这里的数组的元素全都是 DOM 中的链接元素节点,但我要的是字符串,所以这里需要通过映射(map)的方式把元素转为链接,链接在这里表现为 a 元素的 href 属性。

    1.3K10

    抛开插件,你真的懂拖动怎么实现吗?

    当你滚动页面时,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 =

    50410

    整理常见 DOM 操作

    操作 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

    1.3K20
    领券