赞
踩
目录
在前端开发中,js 有各种各样的数据类型,数据类型检测是每个开发者都必须掌握基础知识。数据类型检测的方法也有很多种,本题将封装一个通用的数据类型检测函数。
完善 main.js
中 getType
函数中的 TODO 部分,返回传入值的对应数据类型。
传入值以及 getType
函数返回值(大小写可忽略)按照如下方式对应:
传入值 | 返回值 |
---|---|
's' | string |
0 | number |
false | boolean |
undefined | undefined |
Symbol() | symbol |
function fn(){} | function |
123n | bigint |
null | null |
{} | object |
[] | array |
new Date | date |
new Map | map |
new Set | set |
/a/ | regexp |
题解:这道题主要是选好类型判断的方法,如果使用typeof会对Null和array判断不准确,故采用最方便最准确的方法Object.prototype.toString.call() ,由于该方法判断出来的是[Object string]这样的类型,故需要对这个数组数据去进行切割,采用slice(从 start 索引开始提取数组元素,直至 end 索引(包括 start,但不包括 end))
main.js
- /**
- * @description: 数据类型检测
- * @param {*} data 传入的待检测数据
- * @return {*} 返回数据类型
- */
- // 示例
- const testArr = [
- "s",
- 0,
- false,
- undefined,
- Symbol(),
- function () {},
- 123n,
- null,
- {},
- [],
- new Date(),
- new Map(),
- new Set(),
- /a/,
- ];
- const result = testArr.map((item) => getType(item));
- console.log("得到的结果:", result);
- /*
- 得到的结果:
- [
- 'string', 'number',
- 'boolean', 'undefined',
- 'symbol', 'function',
- 'bigint', 'null',
- 'object', 'array',
- 'date', 'map',
- 'set', 'regExp'
- ]
- */
- function getType(data) {
- // TODO:待补充代码
- let d=Object.prototype.toString.call(data);
- return d.slice(8,d.length-1)
- }
-
- module.exports = {
- getType
- }
使用原生的 CSS 变量加一些 JS 函数就能做出一个简单的渐变色背景生成器。现在渐变色生成器只完成了颜色选取的功能,需要大家帮忙把取色器中的两个色值通过 JS 函数更新给 CSS 变量,从而实现渐变色预览功能。
题解:这个主要思路是给两个选择颜色的盒子加监听事件,由于题目一开始给我们获取到这两个盒子的父元素数组,所以我们可以对父元素盒子进行遍历,然后对每一个小盒子进行监听事件的绑定change,然后将当前事件对象的value重新赋值给大盒子背景颜色的其中一个变量 background: linear-gradient(45deg, var(--color1), var(--color2));
index.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <link rel="stylesheet" href="styles.css" />
- <title>Gradient Generator</title>
- </head>
- <body>
- <div class="controls">
- <input id="color1" type="color" name="color1" value="#00dbde" />
- <input id="color2" type="color" name="color2" value="#fc00ff" />
- </div>
- <div class="gradient"></div>
- <script src="index.js"></script>
- </body>
- </html>
index.css
-
- /* 注意这里定义的 CSS 变量,它们会用于生成渐变色背景 */
- :root {
- --color1: #00dbde;
- --color2: #fc00ff;
- }
-
- body {
- width: 100vw;
- height: 100vh;
- overflow: hidden;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- background: #222;
- }
-
- .controls {
- width: 500px;
- height: 100px;
- display: flex;
- justify-content: space-between;
- }
-
- input[type="color"] {
- -webkit-appearance: none;
- border: none;
- width: 60px;
- height: 60px;
- border-radius: 5px;
- }
-
- input[type="color"]::-webkit-color-swatch-wrapper {
- padding: 0;
- margin: 0;
- }
-
- input[type="color"]::-webkit-color-swatch {
- border: none;
- border-radius: 5px;
- transform: scale(1.1);
- }
-
- .gradient {
- width: 500px;
- height: 500px;
- border-radius: 5px;
- background: linear-gradient(45deg, var(--color1), var(--color2));
- }
index.js
- const inputs = document.querySelectorAll(".controls input");
-
- /**
- * 上面已经选取了两个取色器
- * 请添加相应的 JS 事件处理函数并绑定到合适的事件监听器上(提示:change 事件)
- * 这样我们就可以用取色器选取颜色来生成下方的渐变色背景啦
- * */
- const gradient=document.querySelector(".gradient")
- inputs.forEach((item)=>{
- item.addEventListener("change",function(e){
- gradient.style.background=`linear-gradient(45deg, ${inputs[0].value}, ${inputs[1].value}`
- })
- })
消消乐是一款益智类小游戏,最近比较火爆的一种是立体叠叠乐式的,然后小蓝也想开发一个自己练练手,给它起名叫“水果叠叠乐”。
点击页面上方的水果元素,水果会进入到下方的格子中。当格子中有三个相同水果时会自动消除。格子最多放 7 个水果,当格子中水果为 7 个且无法消除时,点击上方水果元素将不在有任何效果。 请使用 jQuery 或者 js ,完成 index.html
文件中的 TODO 部分。
id=card
中 DOM 元素中的水果元素点击消失的动画效果已在代码中给出,无需操作。id=box
)元素中添加该元素节点,当下面长方格中有三个相同的水果元素时,从盒子元素删除这三个相同的水果元素节点。id=box
)元素中的水果为 7 个且无法消除时,被点击的水果元素节点不在被添加长方格元素中。题解: 主要是找到下方要添加元素的克隆体,因为当上方图片被点击之后,会被隐藏起来,但是这个时候这个元素得被添加到下方盒子中,所以需要采用js的this.cloneNode(true)这个属性。同时还要找到下方这个盒子box里面的li的自定义属性data-id相同的有几个,如果超过3个,就得把这个元素从box里面移除
index.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <title>水果叠叠乐</title>
- <script src="./js/jquery.min.js"></script>
- <link rel="stylesheet" href="./css/style.css" />
- </head>
- <body>
- <div id="stars"></div>
- <div id="stars2"></div>
- <div id="stars3"></div>
- <ul id="card">
- //这里还有很多一样的Li
- <li data-id="4" id="fruit-twelve">
- <img src="./images/grapes.svg" alt="" />
- </li>
- </ul>
- <!-- 图片位置 -->
- <!-- 卡槽位置 -->
- <div class="fixed">
- <div class="gradient-border" id="box"></div>
- </div>
- <script>
- const box=document.querySelector("#box")
- $("#card li").on("click", function (e) {
- // TODO: 待补充代码
- if(box.children.length>=7){}
- else{
- box.append(this.cloneNode(true))
- this.style.display="none"
- let list=document.querySelectorAll(`#box li[data-id='${this.getAttribute('data-id')}']`)
- if(list.length>=3){
- list.forEach(item=>{
- item.remove()
- })
- }
- }
- });
- </script>
- </body>
- </html>
element-ui 官网上具有单选功能的表格 demo 为:点击表格下方的按钮可以选中指定的某行数据。效果如下:
从上图可以看到表格的左边有一列单选组件,但是并未实现单选功能。
现在需要我们完善 mytable.vue
文件中的 TODO 部分,实现点击某个单选组件选中该行数据的效果。效果如下:
实现该功能所需的 api 如下:
table 参数说明
属性参数:
参数 | 说明 | 类型 |
---|---|---|
data | 显示的数据 | array |
stripe | 是否为斑马纹 table | boolean |
highlight-current-row | 是否要高亮当前行 | boolean |
其中如果对表格中某个字段数据呈现个性化显示效果,则可以利用 Scoped slot
获取到 row
,column
,$index
和 store
(table 内部的状态管理)的数据。用法参考下面示例:
- <el-table-column label="日期" width="180">
- <template slot-scope="scope">
- 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/705994推荐阅读
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。