JS采坑指南

DOM(网页文档对象模型)

在 HTML DOM (Document Object Model) 中 , 每一个元素都是 节点(包括文档、HTML元素、HTML属性、文本等)
当浏览器载入HTML文档,它就成为Document对象
Document 对象是 HTML 文档的根节点。
Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

document.方法

document代表整个文档的对象

BOM

BOM操作的时候,操作的整个浏览器,浏览器就被封装为一个对象,这个对象叫window

window

window指的是浏览器对象,又被称为顶级对象(浏览器比文档更大)

事件

事件委托

元素是动态创建时
        // 功能3:删除数据
        let del = document.querySelector('a')
        //动态创建a标签,网页刚打开时还没有a标签,此时获取a标签的对象报错
        del.addEventListener('click', function () {
            tbody.removeChild(del.parentNode)
        })

//改写:
        tbody.addEventListener('click', function (e) {

            let btn = e.target
            //事件源判断  代表点击的就是a标签,要大写
            if (btn.tagName === 'A')
     
        })

可以采用事件委托,将这个事件委托给a标签的父元素
给后追加的元素添加事件,需要使用事件委托

标签

标签对象

获取标签的自定义属性

 <a href="javascript:" data-id="${i}">删除</a>
 //获取标签的自定义属性
 标签对象.dataset.id(自定义属性名)

获取标签内容

获取textarea内容:textarea对象.value

设置标签属性 setAttribute()

设置指定元素上的某个属性值。如果属性已经存在,则更新该值;否则,使用指定的名称和值添加一个新的属性。
要获取某个属性当前的值,可使用 getAttribute();要删除某个属性,可使用 removeAttribute()。

input获得焦点

input对象.focus()

Element.querySelecttor()

Element.querySelector()
返回与指定的选择器组匹配的元素的后代的第一个元素。

对象.innerHTML

设置元素的 innerHTML 将会删除所有该元素的后代并以给定值替代

单选框、复选框状态改变常用onchange事件

select选择器的change事件处理函数

参考文章

select标签的赋值问题

不能简单通过 Select.value=值来给select赋值,select的赋值必须在有列表之后,列表为空时,value值为空

数据结构

Number

isNaN() 函数用来确定一个值是否为 NaN,若有必要,则首先将值转换为数字。由于 isNaN() 函数内部的强制类型转换可能令人迷惑,因此你可能更想要使用 Number.isNaN()。

Math.ceil()

Math.ceil() 静态方法总是向上舍入,并返回大于等于给定数字的最小整数。

String

JavaScript字符串在底层是一个字符串数组,比如hello字符串在底层是[“h”,“e”,“l”,“l”,“o”].
length: 字符串的属性,代表字符串的长度。
字符串可以像数组那样使用下标取值,比如 hello[0],但是不能设置值。

JS中字符串可以进行>、<、==、===比较

具体说明

回文字符串

定义:字符串正序读的结果与倒序读的结果一样,例如“上海自来水来自海上”

Symbol

每个从 Symbol() 返回的 symbol 值都是唯一的。一个 symbol 值能作为对象属性的标识符;这是该数据类型仅有的目的。

js中bool值是false

只有 NaN 0 ’ ’ undefined null转成布尔值为flase,其余转成布尔值都为true

Set(集合)

Set类似于数组,但是成员的值都是唯一的,没有重复的值。
也就是说它是一系列无序,没有重复数值的数据集合。
很多时候我们把Set叫做集合,但是,Set可以是集合,集合不一定是Set
参考文章

Set.prototype.has()

Set 实例的 has() 方法返回一个布尔值来指示对应的值是否存在于该集合中。

Set.prototype.size

Set 实例的 size 访问器属性将返回该集合中(唯一的)元素的个数。

作用域

函数的上下文

参考
参考

总结一下JavaScript 中apply、call、bind的使用方法(在调用函数时设置)

参考文章

对象

获取对象全部的键

参考文章

访问对象的属性值

按照键名获取对象的键值:对象[键名]
举例:参考

对象.属性
对象[‘属性’]   //键有 - 这样的特殊字符,必须用这个语法
对象[变量]  //键用一个变量表示的,必须用[ ]语法,并且变量不能加引号
let obj={
uname:'zs',
'user-name':'lisa',
age:20
}
valueOf()

js调用 valueOf 方法来将对象转换成基本类型值

获取对象的键
可以调用Object的静态方法:Object.keys(对象),来获取该对象的全部键,返回的是一个数组
遍历对象
let obj = {
    name:"ned",
    like:"man"
}
Object.defineProperty(obj, 'age', {
  value: "18",
  enumerable: false
});
for(item in obj) {
    console.log(item)
} 

对象数组

对对象数组进行排序
    <script type="text/javascript">
        let total = [{ chinese: 93, math: 60, english: 10 }, { chinese: 73, math: 50, english: 80 }, { chinese: 13, math: 100, english: 40 }]
        const _rank = array => { return array.sort((a, b) => (b.chinese + b.math + b.english) - (a.chinese + a.math + a.english)) }
        console.log('排序结果:', _rank(total));

    </script>

在这里插入图片描述

数组

生成一个定长数组
[...Array(number)].map(x => number)

强制类型转换

String

String(数据);:可将任何的一种数据类型转换为字符串类型

数组转字符串

在这里插入图片描述

字符串转数组

在这里插入图片描述

对象和字符串之间的转换

在这里插入图片描述

语法

运算符

可选链运算符(?.)

在这里插入图片描述

函数

函数声明和函数表达式的区别

参考:参考文章

Jst中try{}catch{}finally的使用

参考文章

if(a in b)

js中的if(…in…)语句,用来判断一个属性是否属于一个对象

for…in循环

for…of循环

for…of 循环是 JavaScript 中的一种循环结构,它可以用于遍历各种数据结构,例如数组、字符串、Map、Set 等。for…of 循环通常用于替代传统的 for 循环或 forEach 循环,因为它具有更加简洁和易读的语法,能够提高代码的可读性和可维护性。
每次迭代都会创建一个新的变量。在循环体内部重新赋值变量不会影响可迭代对象(在本例中,是一个数组)的原始值。

回显大量数据到form表单的写法

在这里插入图片描述

// 回显数据
    // 定义一个数组,保存的是我们可以直接渲染的键
    const arrKeys = ['name', 'age', 'group', 'hope_salary', 'salary']
    arrKeys.forEach(item => {
        // 根据属性选择器找到对应的对象
        document.querySelector(`[name=${item}]`).value = res.data[item]

    })
    // 渲染性别,单选框的回显
    const genders = document.querySelectorAll('[name="gender"]')
    genders[res.data.gender].checked = true

在这里插入图片描述

如何给使用闭包的内部函数传值(给返回值为函数的函数传值)

力扣2623

<script>
        function memoize(fn) {
            const cache = {};
            return function () {
                // 将参数转换为字符串
                console.log('arguments', arguments);
                return arguments[0]
            }
        }
        let fn = function () {

        }
        var b = memoize(fn) //返回一个函数
        console.log('return:', b(1, 2, 3)); //b(参数)调用返回的函数  
    </script>

在这里插入图片描述

正则表达式

RegExp

RegExp 对象用于将文本与一个模式匹配。

正则表达式中的符号
首先是^$意思就是按照我们所设定的规则进行匹配
\是转义的意思,因为$在正则里面是以什么什么结尾的意思,所以要先用\把它转成普通含义
*就是可有可无的意思

AJAX

解析url参数

 <script>
        const _getParams = (url) => {
            // 补全代码)
            var searchString = url.substring(url.indexOf('?'));
            const params = new URLSearchParams(searchString)
            console.log('params:', params);
            const obj = Object.fromEntries(params)
            console.log(obj)
            console.log('js1', JSON.stringify(obj));
            console.log('js2', JSON.stringify({ id: '1', sales: '1000', tt: '3232' }));
            return obj

        }
        _getParams('https://nowcoder.com/online?id=1&salas=1000&tt=3232')
    </script>

在这里插入图片描述

拼接URL参数

//创建URLSearchParams对象
const paramsObj=new URLSearchParams({
参数名1:值1,
参数名2:值2
})
//2.生成指定格式查询参数,字符串
const queryString=paramsObj.toString()
//结束: 参数名1=值1&参数名2=值2
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值