减号,乘号,除号都有隐式转换的功能
只有在其 所在的 以及 之后的式子可以转换,
简单理解为出现这些符号之后的所有都可以转换
alert(‘1’+23-true)//122
alert(‘1’-23+false)//-22
alert((‘1’-23)+false)//-22
alert((‘1’+23)-false)//123 括号里的已经形成’1’23,无法转换了
alert(‘1’+23-false)//123
请写出获得15-23(包含15和23)之间的随机 整数 的代码。(4分)
Math.floor(math.random()(23-15+1)) + 15
Math.ceil(math.random()(23-15)) + 15
注意向上、向下取整问题,里面涉及的数值不手动计算,因为这样代码可读性更高
var str=’1235746’
console.log(str.indexOf(“@”));
// indexOf是返回某个字符在字符串出现的位置的,如果不存在,返回-1,如果存在,返回第一次出现的位置
//同理;indexof()可以获取数组中某个元素的索引,如果不存在返回-1
例如取消勾选中的一段代码
var x =arr.indexOf(this.parentNode.parentNode);
arr.splice(x,1)
isNaN(x) (就是判断x是不是NaN,是就返回true)
如果 x 是 特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false (就是判断x是不是NaN,是就返回true)
NaN:
NaN(Not a Number,非数)是数值数据类型的一类值,表示未定义或不可表示的值。常在浮点数运算中使用。
break、continue和 return的区别?
在循环中使用 break 和 continue
break终止循环的执行;
continue中断本次循环继续下次循环。
在函数中使用 return,可以返回值并终止函数的执行。
JavaScript 数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
在写代码的时候,遇到一些繁琐的名称,可能会出现逻辑问题而不自知,比如e.target.XXX,此时最好创建一个新的变量名来代替e.target.XXX,纠错时也会容易很多
注意DOM结构
当鼠标拖拽事件时,分为onmousedown,onmousemove,onmouseup三个事件,结构无错,不报错,但运行不对是因为默认事件的发生,鼠标抬起的动作无法执行
e.preventDefault()//默认事件不会发生
<!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">
<title>Document</title>
<style>
.big_pic {
width: 360px;
margin: 0 auto;
position: relative;
}
#small_pic {
width: 360px;
height: 50px;
border: 1px solid black;
border-radius: 26px;
margin: 0 auto;
background-color: skyblue;
position: relative;
}
#arrow {
border-radius: 50%;
/* border: 1px solid red; */
overflow: hidden;
width: 50px;
height: 50px;
top: 0;
position: absolute;
}
#arrow.img {
width: 50px;
height: 50px;
}
.suspension {
position: absolute;
left: 0;
top: 30px;
}
</style>
</head>
<body>
<div class="big_pic">
<img src="./images/a.png" alt="">
<img src="./images/a1.png" alt="" class="suspension">
</div>
<div id="small_pic">
<div id="arrow">
<img src="./images/arrow.png" alt="">
</div>
</div>
<script>
var suspension = document.querySelector('.suspension')
var arrow = document.querySelector('#arrow')
var mouse_start_x
var mouse_end_x
arrow.onmousedown = function (e) {
var d = e.clientX - this.offsetLeft
console.log(d);
e.preventDefault()//默认事件不会发生
arrow.onmousemove = function (e) {
mouse_end_x = e.clientX - d
console.log('-----------');
console.log(mouse_end_x);
if (0 <= mouse_end_x && mouse_end_x <= 300) {
arrow.style.left = mouse_end_x + 'px'
suspension.style.left = mouse_end_x + 'px'
}
}
}
arrow.onmouseup = function () {
console.log('****');
if (100 <= mouse_end_x && mouse_end_x <= 120) {
alert('验证成功')
arrow.style.left = ''
suspension.style.left = ''
}
arrow.onmousemove = null;
arrow.onmouseup = null
}
</script>
</body>
</html>
冒泡和默认事件
1.event.stopPropagation()方法
这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个链接,这个链接仍然会被打开,
2.event.preventDefault()方法
这是阻止默认事件的方法,调用此方法是,连接不会被打开,但是会发生冒泡,冒泡会传递到上一层的父元素;
3.return false ;
这个方法比较暴力,他会同事阻止事件冒泡也会阻止默认事件;写上此代码,连接不会被打开,事件也不会传递到上一层的父元素;可以理解为return false就等于同时调用了event.stopPropagation()和event.preventDefault()
原文博客链接:https://blog.csdn.net/wxl1555/article/details/53128966
JSON.parse() 将JSON字符串转换为对象、数组
JSON.stringify() 将对象、数组转换为JSON字符串
JSON是一种数据交换格式,拥有固定格式字符串
get请求直接被嵌入在路径中,URL是完整的请求路径,包括?后的部分
post请求内容全部在请求体中
find()方法返回通过条件的 数组的 第一个值,没有符合元素就返回undefined
cookie是在服务端生成的,传递到客户端,在客户端存储的一种技术,用来解决http协议的无状态问题
ES5中的普通函数内部this并不是指向window,而是谁调用就指向谁
若父元素要成为子元素的绝对定位参照物,只要父元素中有position属性即可
jQuery中的方法和原生JS的方法不通用
onchange监听事件是在当表单元素发生改变且失去焦点时触发
jQuery是一个对原生JS封装的库
事件委托的原理:事件委托就是基于JS的事件流产生的,事件委托是利用事件冒泡,将事件加在父元素或者祖先元素上,触发该事件
优点:减少事件注册,节省内存空间,执行效率提高
新增元素节点时,不需要给新增节点绑定事件