首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一起来做一个json格式化工具吧

缩进 第一个也是最重要功能就是缩进,先来看一下我们最终要实现缩进效果: 我们实现原理是将json数据转换成html字符串,换行可以通过块级元素,缩进可以通过margin。...,点击事件我们可以通过事件代理方式来监听容器元素点击事件,展开收起其实就控制对象和数组整体元素显示与否,并且收起时候还要在括号中显示...效果。...省略号可以在整体元素前创建一个省略号元素,也是同样切换它显示与否,具体实现如下: let uniqueId = 0 const stringifyToHtml = (data, isAsKeyValue...、切换整体元素和省略号元素显示与否 if (isExpand) { target.classList.remove('expand')...,更不用说添加和删除节点,所以如果有编辑需求,那更好选择可能是用CodeMirror 之类编辑器。

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

快速搭建一个代码在线编辑预览工具(实战)

,同时减少找到第一个有空间编辑宽度,直到无法再继续拖动; 3.如果是向右拖动的话,检测本次拖动编辑器及其右侧是否存在还有空间可以压缩编辑器,没有的话也代表不能再拖动,如果有的话,找到第一个并减少该编辑宽度...,同时增加本次拖动编辑器左侧第一个编辑宽度; 核心代码如下: const onDrag = (index, e) => { let client = this....this.isCanDrag('rightDown', index)) { return } // 找到拖动中编辑器及其右边编辑器中第一个还有空间编辑器索引...,所以也需要手动控制它显示与隐藏,需要注意是要能区分哪些按钮是本次可以操作,否则可能下级是收缩状态,但是上层又把该按钮显示出来了: // 在子元素里找到有指定类名第一个元素 const getChildByClassName...来转换一下,不过想要找到这些转换器浏览器使用版本和api太难了,笔者基本都没找到,所以这里大部分代码都是参考codepan

4.4K30

快速搭建一个代码在线编辑预览工具

,同时减少找到第一个有空间编辑宽度,直到无法再继续拖动; 3.如果是向右拖动的话,检测本次拖动编辑器及其右侧是否存在还有空间可以压缩编辑器,没有的话也代表不能再拖动,如果有的话,找到第一个并减少该编辑宽度...,同时增加本次拖动编辑器左侧第一个编辑宽度; 核心代码如下: const onDrag = (index, e) => { let client = this....this.isCanDrag('rightDown', index)) { return } // 找到拖动中编辑器及其右边编辑器中第一个还有空间编辑器索引...> 点击展开收缩按钮时候根据当前展开状态来决定是展开还是收缩,展开和收缩操作是wrap元素高度,收缩时同时插入一个省略号元素来表示此处存在收缩,同时因为按钮使用绝对定位,脱离了正常文档流,所以也需要手动控制它显示与隐藏...,需要注意是要能区分哪些按钮是本次可以操作,否则可能下级是收缩状态,但是上层又把该按钮显示出来了: // 在子元素里找到有指定类名第一个元素 const getChildByClassName =

4K20

Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单

== undefined  -->”,这个真的不是注释,这个是有用。为了不产生脏元素,ko支持这种绑定写法。这里先用if做了判断,然后再绑定子集。其余,就是简单data-bind语法了。...右侧编辑模板绑定 这块无疑是比较复杂一块,我们先进行肢解: 通用模块:顶部按钮组、名称输入框、保存按钮 模板(按微信类型加载不同模板) 我们先来看看整体编辑模板: <div class="ibox-title...", icon: "fa-link", des: "用户点击此类型按钮后,微信客户端将会打开开发者在按钮中填写网页URL,与网页授权获取用户基本信息接口结合,获得用户基本信息。"...$data表示当前项,即乃父儿子某个儿子,用于循环中获取当前项数据。 with类似于using命名空间一样,用了它,下面的元素都可以省却改命名空间了。 是不是很简单样子。...总结 通过使用knockoutjs 动态模板,我们可以很方便根据需要加载不同模板进行绑定显示

82540

Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单

== undefined  -->”,这个真的不是注释,这个是有用。为了不产生脏元素,ko支持这种绑定写法。这里先用if做了判断,然后再绑定子集。其余,就是简单data-bind语法了。...右侧编辑模板绑定 这块无疑是比较复杂一块,我们先进行肢解: 通用模块:顶部按钮组、名称输入框、保存按钮 模板(按微信类型加载不同模板) 我们先来看看整体编辑模板: <div class="ibox-title...", icon: "fa-link", des: "用户点击此类型按钮后,微信客户端将会打开开发者在按钮中填写网页URL,与网页授权获取用户基本信息接口结合,获得用户基本信息。"...$data表示当前项,即乃父儿子某个儿子,用于循环中获取当前项数据。 with类似于using命名空间一样,用了它,下面的元素都可以省却改命名空间了。 是不是很简单样子。...总结 通过使用knockoutjs 动态模板,我们可以很方便根据需要加载不同模板进行绑定显示

89030

如何根据页面标签自动生成文章目录?分析+代码详解

遍历文章,很简单,我们使用childNodes方法和foreach坏即可。 childNodes 属性返回节点子节点集合,以 NodeList 对象。 实操演示如下。...遍历文章 原生JavaScript 单层包括,也就是需要生成目录文章,外层有一个或其他双标签进行嵌套,如: [只有一个div双标签进行嵌套] 这个时候我们在根标签加上一个ID即可...[效果] 封装元素 接下来,看到这些#text是不是束手无策?其实也很简单,我们进一步进行解析即可。...首先在坏遍历外侧,添加一个数组,如果页面元素标签,在这个数组范围内,就提取到标签集合并生成一个对象丢到titles内: // 哈哈,三级目录差不多了吧。...首先是给文章每个标签,加上id,id生成,我们使用变量时index即可: const id = "header-" + index; // 设置元素id e.setAttribute("id

5.1K91

06-老马jQuery教程-jQuery高级

返回 'false' 将停止循环 (就像在普通环中使用 'break')。返回 'true' 跳至下一个循环(就像在普通环中使用'continue')。...value数组元素, index数组元素索引 arr.forEach(function(value, index) { console.log('index:',index, 'value...callback:为每个数组元素调用,而且会给这个转换函数传递一个表示被转换元素作为参数。函数返回任何值。 示例 // 将原数组中每个元素加 4 转换为一个新数组。...——第一个数组元素后面跟着第二个数组元素。...要去除重复项,请使用$.unique() 参数 first:第一个待处理数组,会改变其中元素。 second:第二个待处理数组,不会改变其中元素。 示例 // 合并两个数组到第一个数组上。

1.8K00

JavaScript 数组总结 原

i = 0, div; div = divs[i]; i++) {   /* Process div in some way */ } 这样避免了检测数组长度开销,额外好处是确保了div变量当前在每次循环中都被重新赋值为当前项...forEach()方法提供了遍历数组元素其它方法 var colors=['red', 'green', 'blue']; colors.forEach(function(color){ console.log...(color); //color要写或其他名字也行,但不能为空 }); 被传递给forEach函数会在数组每个元素像上执行一次,元素作为参数传递给该函数。...未赋值值不会在forEach循环迭代。...注意,在数组定义时省略元素不会在forEach遍历时被列出,但是手动赋值为undefined元素是会被列出: 数组方法 concat()连接两个数组并返回一个新数组 var myArray

44720

你不知道 DOM 变动观察器:Mutation observer

— 被更改特性名称/命名空间(用于 XML), oldValue —— 之前值,适用于特性或文本更改,如果设置了相应选项 attributeOldValue/characterDataOldValue...例如,这里有一个 ,它具有 contentEditable 特性。该特性使我们可以聚焦和编辑元素。...想象一下,你需要添加一个第三方脚本,该脚本不仅包含有用功能,还会执行一些我们不想要操作,例如显示广告 Unwanted ads。...为了使用 Prism 对以上代码片段进行语法高亮显示,我们调用了 Prism.highlightElem(pre),它会检查此类 pre 元素内容,并为这些元素添加特殊标签(tag)和样式,以进行彩色语法高亮显示...; } `; 现在我们有了 MutationObserver,它可以跟踪观察到元素,或者整个 document 中所有高亮显示

2.1K10

ASP.NET Core 5.0 MVC中 Razor 页面 介绍

显式表达式可用于从 .cshtml 文件中泛型方法呈现输出。 以下标记显示了如何更正之前出现由 C# 泛型括号引起错误。... 标记可用于在呈现内容时控制空格: 呈现 标记之间内容。 标记之前或之后空格不会显示在 HTML 输出中。..."; } CustomText 显示在视图中: @inherits CustomRazorPage Custom text: @CustomText 该代码呈现以下...@layout 此方案适用于 Razor ( razor) 组件。 @layout指令指定 Razor 具有指令路由组件布局 @page 。 布局组件用于避免代码重复和不一致。...指令属性 Razor 指令特性由带有符号后保留关键字隐式表达式表示 @ 。 指令特性通常会改变元素分析方式,或实现不同功能。

26710

ASP.NET Core中结合枚举和资源文件显示列表

模型类某些属性以枚举形式出现,我们希望在打开编辑表单时在选择列表中显示枚举值。有时我们想要枚举元素名称,但有时我们想要使用自定义名称甚至翻译。...这个例子演示了如何获取枚举元素名称以选择ASP.NET Core上列表。 假设我们有一个客户实体,其客户类型属性定义为枚举。...: 枚举成员一个名字 具有Display属性和静态名称Enum成员 具有显示属性和资源文件枚举成员 我资源文件在这里。...现在添加了一个简单编辑视图,并使用Html.GetEnumSelectList()扩展方法来填充带有enum成员选择列表。注意我如何添加第一个空选择(选择类型)作为选择列表唯一成员。..." /> Back to List 当运行应用程序并移至编辑表单时

1.4K20

KnockoutJS语法

Knockout初体验 1.1 Before Knockout   假设我们页面输入区域有一个div用来展示一件物品名字,同时有一个输入框用来编辑这件物品名字 <div id=”itemName”...上述代码定义了一个fadeVisible绑定,用来控制元素显示动画效果。...init方法根据dom元素传入参数当前状态设置初始显示效果;update方法在pointsUsed 每次发生更新时触发,更新元素显示效果  3.2 Template binding   模板绑定用模板渲染结果来填充关联...DOM元素,构建复制UI架构、复用、嵌套  knockout 支持两种类型模板   Native templating:内置,用于加强控制流程绑定   String-based templating...focus,其目的是为了在选中todo元素,可以立即进入可编辑状态 ?

2.3K40

如何使用 HTML、CSS 和 Vanilla JavaScript 以及本地存储创建待办事项应用程序

用户将能够执行以下操作: 添加任务 编辑任务, 删除任务和 将任务标记为已完成 HTML结构 我们 HTML 将包含三个部分: 留言区 搜索框部分 任务部分 <div class="container...每个任务将包含以下元素: 用于将任务标记为完成单选按钮 用于显示任务 span 元素 一个编辑按钮和一个删除按钮 使用 CSS 设计样式 我们将从主体样式开始,以确保所有元素水平居中: body {...最后,我们获取 li 元素 data 属性值并将其存储在名为 变量中taskId。我们在实现本地存储时会用到这个值 编辑任务 定义一个名为 函数editTask()。...在这个函数中,我们想要执行与删除按钮相同步骤:即: 获取所有编辑按钮 使用forEach()方法迭代并获取最接近li元素 获取 data-id 属性 allTasks使用 id 在数组中查找任务...当传递给数组时,该findIndex()方法查找满足指定条件第一个元素索引。

8110

ASP.NET MVC使用Bootstrap系统(2)——使用Bootstrap CSS和HTML元素

在上述代码中,我添加了一个class为containerdiv容器,并且包含了一个子div元素row(行)。row div元素依次有3列。...Bootstrap提供了class为has-error中样式(label字体变为红色,input元素加上红色边框)来显示错误: ...ASP.NET MVC包含了若干编辑模板,当然我们也可以实现扩展。编辑模板类似于局部视图,不同是,局部视图通过name来渲染,而编辑模板通过类型来渲染。...所以,为了让Editor helper生成class为form-control表单元素,我们需要创建一个自定义编辑模板来重写旧模板。...最后探索了ASP.NET MVC中编辑模板,能让产生input元素自动包含form-control样式。

3.7K40
领券