Javascript

本文深入讲解JavaScript编程要点,涵盖执行方式、调试技巧、数据类型、内置函数、事件处理及DOM操作,适合初学者和进阶者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

执行js的方式:

1.写script标签中
2.引入外部js文件
3.通过事件的方式
4.通过协议的方式

调式js的方式:

1.document.title();
2.document.write();
3.console.log()
4.console.dir();
5.alert();

奇葩+

1.数字运算 2.字符串的连接(如果有一边是字符串,就是拼接)

(重点)定时器:

一次性定时器:setTimeout(function(){},1000);-->setTimeout('test()',1000);

周期定时器:  setInterval(function(){},1000);-->setInterval('test()',1000);

6大数据类型:boolean string number function object undefined

null-->属于对象类型,null是一个不存在的对象的占位符,如:找不到对象(声明空对象是应将其赋值为null)

undefined-->1.定义了对象,没有赋值 2.使用没有定义的值

NaN的描述:结果本要范围 number 类型的,但结果又不是一个正确的number例如:var sum = 10 / 's';

一些内置的函数:

Math.abs();-->绝对值

Math.floor();-->舍去取整

Math.ceil();-->进1取整

Math.random();-->随机数

toFixed();-->四舍五入-->例如:var num=1.234;  res=num.toFixed(2);-->1.23;

charAt();返回数字对应的字符串-->str='malikuan';  res=str.charAt(str.length-1);

indexOf();-->返回某个字符串首次出现的位置-->var pos=str.indexOf('k');

substr(截取的位置, 截取的长度)-->res=str.substr(1,3);

转换为boolean   空、零、假-->false   其它-->true

文字跑马灯特效:
/*	
var msg = 'javascript文字跑马灯';
var i = 0; 
var timer = setInterval(function(){
	var tmp = msg.substr(0,i); 
	tmp += '<font color="red" style="font-size:1cm;">' + msg[i] + '</font>';
	tmp += msg.substr(i+1);
	var box = document.getElementById('box');
	box.innerHTML = tmp;
	i++;
	if(i >= msg.length){
		i= 0;
	}
},50);

*/

###函数:
函数定义细节
函数的形参可以不接收实参,默认值为undefined
老版本的浏览器,不允许形参定义默认值
返回值
默认返回值,就是undefined
执行了return,后面语句不再执行

任意参数的函数-->function test(){};
匿名函数-->res=function(){};

变量的作用域:

局部变量:-->函数内部定义
		 -->有 var 局部变量,作用函数内部;
		 -->没 var  全局变量,函数外可以访问 

(重点)变量的作用域链:
	1.只能向上寻找,不能向下寻找
	2.形成闭包(变量不能被销毁)-->解决方案???

###对象:
1.直接声明
格式:{属性名1:属性值1,属性名n:属性值n};
–>obj={‘name’:‘malikuan’,‘age’:23,‘sex’:‘man’};
2.属性名添加引号:有特殊字符时,可以使用引号定义

3.访问对象属性-->obj['name'];-->要解析变量,必须用方括号[]

4.得到对象的方式-->???

5.找对象的方式:
document.getElementById();
document.getElementsByTagName();

数组:var list=[1,2,3];

都是使用for in 遍历

for(var key in list){
	console.log(list[key]);
}

Bom 内的知识点很模糊???

事件绑定:

--1.<button id='btn' onclick="test(this,event);">事件绑定1 test()</button>
	function test(obj,e){}

--2.var btn = document.getElementById('btn');
	btn.onclick = function(){
		alert(2);
	};
// 对象绑定的优先级高

重点:

e.clientX,e.clientY		鼠标相对于 body 的左上角
e.offsetX,e.offsetY		鼠标相对于 对象 的左上角

obj.offsetWidth , obj.offsetHeight	对象的宽高
obj.offsetLeft , obj.offsetTop 对象距离窗口的距离

// 逻辑短路,解决兼容性问题!!!!
var e = evn || window.event;

事件总结:
onclick();–>当鼠标点击时

onload();-->文件加载完成时

onerror();-->当加载失败或者错误是执行

onmousedown()-->当鼠标按下时执行

onmouseup()-->当鼠标弹起时执行

ondblclick()-->当鼠标双击时执行

onmousemove()-->当鼠标在对象上面移动时执行

onmouseover()-->当鼠标移入对象时执行

onmouseout()-->当鼠标移出对象时执行

onmouseenter()-->当鼠标进入时执行
(重点)当元素之间存在层级关系,触发上层元素,同时也会触发下层元素,这就是,事件冒泡
 --->e.cancelBubble = true;

oncontextmenu()-->鼠标右击执行
阻止默认行为:return false;

onkeydown()-->键盘事件

onscroll()-->当窗口在滚动是执行

onfocus()-->当表单得到焦点时执行

onblur()-->当表单失去焦点时执行

onreset()-->当表重置按钮时执行

onsubmit()-->当表单提交时执行

onchange()-->当内容被修改时执行

onselect()-->当文本被选中时执行

oninput()-->用户输入时执行

JS方法

-->JSON.parse(string);-->js从php请求来的本来就是字符串转换为对象(注意内容只能使用双引号)

json函数

json_encode();把php的内容转换成json格式,才可以让js接收

json_decode();js传来到php的数据本来就是‘字符串’,其作用就是把‘字符串’转换成对象或者数组

###############################################################

null 代表的是没有值,属于对象类型,例如:没有找到对象

undefined-->定义了变量没有赋值;使用了没有定义的值

使用关键字 var 定义变量
var num = 100;
var a = 'app'; b = 'bag';

注意:所有内容严格区分大小写

加号的两种含义:1.数学运算  2.字符串连接符
注意:只要有任何一边是字符串,就是拼接


多向分支-->switch(类型判断)  if else if(敏感的空格)

匿名函数的形式-->setTimeout(function(){},1000);-->clearTimeout(timer)

setInterval( 回调函数,时间)-->clearInterval(timer)

数据类型的检测-->typeof

null的描述:属于对象类型,null是一个不存在的对象的占位符,如:找不到对象

undefined-->变量的类型是根据值而定义的,没有值,则系统也不清楚到底是什么类型,所以就是 undefined

NaN的特性
任何涉及NaN的操作,结果都返回NaN
NaN与任何值都不相等,包括NaN本身

DOM???

节点:是关于如何获取、修改、添加或删除 HTML 元素的标准

属性节点、注释节点、文本节点、元素节点、文档节点

节点定位:getElementById()  getElementsByTagName()

根节点:
document.documentElement  --> html
document.body  			  --> body
节点的顶端就是 #document 

firstChild / nextSibling / lastChild / previousSibling / parentNode

所有子节点:包含,注释节点,文本节点,元素节点
console.dir( box.childNodes );

所有子元素节点(常用) children

console.dir( box.children ); 
基于某个对象找子元素 box.getElementsByTagName('li'); 范围更精确

属性节点集合 attributes

console.dir( txt.attributes);
nodeValue-->节点值
nodeType-->节点类型 ##
nodeName-->节点名称 ##

动态创建元素

document.createElement('tag')

创建节点(动态创建)

var objSpan = document.createElement('span');

objSpan.style.border = '1px solid red';

objSpan.style.color = 'blue';

objSpan.innerHTML = '我是JS动态添加的';

// 添加子元素,添加到节点树(默认添加到最后)-->把span标签添加到 id 为 box的区域中
// box.appendChild(objSpan);

// 添加到第一个子元素之前 param2:是指定的位置
box.insertBefore(objSpan , box.lastChild.previousSibling);

克隆节点 cloneNode

var btn = document.getElementById('btn');
var cloneBtn = btn.cloneNode(true);// 默认情况下,不会携带事件与子元素// 添加参数 true 可以携带子元素
var box = document.getElementById('box');
box.appendChild(cloneBtn);

删除节点 removeChild

var box = document.getElementById('box');
box.removeChild( box.firstChild.nextSibling );// 删除子节点
box.parentNode.removeChild(box);// 通过节点定义到父级节点,将自己干掉

var man = document.getElementById('man');
var txt = document.getElementById('txt');

获取属性

getAttribute();-->// 添加(非法)标签属性,在文档中是可见的,使用 getAttribute 可以获取可见的属性
txt.value = man.getAttribute('src');

设置属性 setAttribute

txt.value = man.setAttribute('title','猛男');
非标准属性,在文档里不可见,但存在并可以使用(常规)
txt.value = man.see;

其它

字符串
	变量与字符串、变量与变量要使用+来连接。

typeof-->运算符-->判断数据类型-->alert(typeof sum);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值