A · 解答思路 问题的根源在于路由模式和参数获取方式不匹配:如果项目使用的是 hash 模式路由(# 开头),实际参数是拼接在 location.hash 里的,而提问者却用 location.search 去获取,自然拿不到值,一直是 null。 详细说明 - Vue Router 默认(或
A · 解答思路 这类“点击左侧菜单,右侧内容区切换”的后台管理系统,常见的实现方式大致可以分为三类:iframe 嵌入、Ajax 局部刷新、以及基于单页应用(SPA)框架的路由切换。 详细说明 1. iframe 引入:每个菜单项对应一个独立的页面地址,切换菜单时改变某个 iframe 的
A · 解答思路 在嵌套循环中删除元素时要注意“你要删除的是哪一层”:如果用 splice 直接操作内层数组,需要格外小心索引错位的问题;更稳妥的做法是外层用 map 生成新数组,内层用 filter 按条件筛选出需要保留的元素,两者组合既能避免索引错乱,又能直观表达“筛选”这个语义。 示例代码
A · 解答思路 setInterval 一旦启动,间隔时间确实无法再动态修改;但可以换用 setTimeout 递归调用自身的方式实现定时器,每次调用时都可以重新传入一个新的(可变的)延时值,从而实现“间隔时间可变”的效果。 示例代码
A · 解答思路 $(".t1") 这类选择器的作用是“在调用的那一刻”找到当前 DOM 中所有匹配的元素,并把事件直接绑定在这些具体的 DOM 节点上;后续再修改 class 或新增符合 .t1 的元素,都不会自动补上这个事件,因为绑定动作早已完成。要让动态元素也能响应事件,需要使用事件委托的写法。
A · 解答思路 { ...to } 使用的是 ES2015(ES6)引入的对象展开运算符,作用是把 to 对象上的所有可枚举属性“平铺”复制到一个新的对象字面量里;如果后续不对这个新对象做任何修改,效果和直接传 to 是一样的,但如果需要在展开的基础上覆盖或新增字段,两者就会产生差异。 示例代码
刚才回答了一个H5游戏的问答。心血来潮,就想写写碰撞检测,废话不多说,直接怼。
A · 解答思路 使用 document.querySelectorAll 配合 CSS 子选择器 >,可以精确获取某个元素下的直接子元素。 示例代码 详细说明 #uu>li 是一个 CSS 子选择
A · 解答思路 分析一个页面用了哪些技术,最直接的方式就是打开浏览器开发者工具,从 Console、Sources、Network 等面板入手排查,动画效果和第三方插件基本都能通过这种方式定位到。 详细说明 - 动画效果:这个页面的动画是用 CSS3 实现的,核心用到了 transform: tra
前段时间在网上看到一个网址,好奇之下进去看了看。胜利的条件是你录入一个串,让其调用prompt(1) 。发现里面有好多想不到的东西,今天终于悠闲了来这里说说XSS。