智能社:javascript教程(基础)
来源:互联网 发布:直到世界的尽头知乎 编辑:程序博客网 时间:2024/04/28 07:49
1)
js事件绑定
onmouseover=""; //鼠标焦点
onmouseout=""; //鼠标移出
更改元素样式
A.style.样式(width/color/display/...)=""; //可以更改元素任何属性,A.value="";/A.title="";
//网页一键换肤功能:点击事件绑定+更改外链css样式表链接
B.href="css1.css";
判断逻辑 if
//点击下拉菜单显示和隐藏:点击事件绑定+if判断属性display
<button id="btn"></button>
<div id="oDiv" display="none"></div>
<script>
(function (){
var oDiv=document.getElementById("oDiv");
var btn=document.getElementById("btn");
if (oDiv.style.display=="block") {
btn.onclick=function(){ oDiv.style.display="none";
}
else {
btn.onclick=function(){ oDiv.style.display="block";
}
}()); //立即调用函数
</script>
//选取class元素必须写成className
2)
函数传参 //调用函数具有同一功能,参数值不同
<div id="div1"></div>
<button id="btn1" ></button>
<button id="btn2"></button>
var div1=document.getElementById("div1");
var btn1=document.getElementById("btn1");
var btn2=document.getElementById("btn2");
function setColor(color){ //设置函数参数
div1.style.background=color;
}
btn1.onclick=setColor("green"); //传参
btn2.onclick=setColor("blue");
//另一种操作属性的方法,[ ]可以储存传递参数,适用于不固定的属性
A.style[width]="100px"; //等同于 A.style.width="100px";
function setStyle(name,value){
var A=document.get.......;
A.style[name]=value;
}
B.onclick=setStyle("width","200px");
style操作的是行间样式,class操作的是样式表中样式
// 对于用一元素,根据优先级会造成样式覆盖,建议统一属性操作
window.onload=function(){......}; //页面加载之后执行函数
document.getElementsByTagName('') //通过标签名获取多个元素,形成数组
//JS中改变元素属性只针对一个元素,可以用循环遍历数组
while循环
var i=0;
while (i<5) {
alert(i);
i++;
}
for循环
for (var i=0;i<5;i++) {
alert(i);
}
<div></div><div></div><div></div> //改变n个div的背景色
var A=document.getElementsByTagName("div");
for (var i=0;i<A.length;i++) {
A[i].style.background="black";
}
布尔值 ture/false //checked=ture/false
//选项卡,点击后按钮高亮及内容显示,其他按钮不高亮,其他内容隐藏:
//点击事件绑定当前按钮添加class高亮;其他按钮移除class高亮;
//当前内容display:block,其他内容display:none;
.light=background:yellow;
<button class="light"></button>
<button</button>
<button></button>
<div style="display:block"></div>
<div></div>
<div></div>
var oBtn=document.getElementsByTagName("button");
var aDiv=document.getElementsByTagName("div");
for (var i=0;i<oBtn.length;i++) {
aBtn[i].index=i; //为每个按钮添加自定义属性index,赋值i
oBtn[i].onclick=function(){ //每个按钮绑定点击事件
for(var i=0;i<oBtn.length;i++) {
oBtn[i].className=" "; //使每个按钮的class为空
aDiv[i].style.display="none"; //使每个div都隐藏
}
this.className="light"; //当前执行函数的按钮的class=light
aDiv[this.index].style.display="block"; //当前执行函数的按钮所对应的div显示
};
}
//创作,调用数组
var arr = [1,2,3,4]; arr[0];
3)
typeof 运算符 //返回变量的类型
NaN与NaN不相等
非数字检测方法 isNaN() //返回布尔值ture/false
变量类型转换:
parseInt() //将字符串转换成整数
parseFloat //将字符串转换成小数
== //变量转换成相同类型后,进行比较
=== //绝对相等比较
一句话解释 闭包 : 子函数可以使用父函数的局部变量
命名规范:匈牙利命名法
运算符号:
%求模 //隔行变色,分秒时间转换
&& 与 and ; || 或 or
流程控制:
判断语句
if....else if...else if....else....
switch(变量){
case "值1";
语句1;
break;
case "值2";
语句2;
break;
default;
语句n
}
循环语句 while for
//break 中断整个循环过程
//continue 跳过此次循环,继续循环
JSON
类似于数组的储存对象
var json={a=1,b=2,c=3};
alert(json.a); //1
alert(json["a"]) //下标是字符串,没有length
for in 循环 可以不需要length
for(var i in arr){...}
for(var i in json){...}
4)
函数传参,可变参
arguments //用于函数中参数不确定的情况,是数组
//不定参数求和
function sum(){
var result=0; //定义一个中间参数
for(var i=0;i<arguments.length;i++) { result+=arguments[i]; } //循环遍历不定参并相加
return result; //返回中间参数的值
}
alert(sum(1,2,3,4,5)); //15
//css函数
//语法:css(obj,name,value);
function css(obj,name,value) {
if(arguments.length===2) { return obj.style[name]; } //两个参数时,获取样式
else { obj.style[name]=value; } //三个参数时,修改样式
}
css("oDiv","width","200px"); //修改oDiv的宽度200px·
//调用非行间样式
//js处理浏览器兼容性,通常用if语句判断true/false
function getStyle(obj,name){ //包装为公共函数
if(obj.currentStyle) { return obj.currentStyle[name]; } //turn,currenStyle兼容
else { return getComputeStyle(obj,false)[name]; } //false,getComputeStyle兼容
}
getStyle(oDiv,width);
数组操作:
length可以设置
var arr=[1,2,3,4];
arr.length=3;
alert(arr); //1,2,3
//清空数组 arr.length=0;
添加数组尾部元素 添加数组头部元素删除数组尾部元素 删除数组头部元素arr.push(5); arr.unshift();
splice 插入、删除、替换arr.pop(); arr.shift();
var arr=[1,2,3];
// 删除:splice(起点,长度);
arr.splice(1,1); //1,3
// 插入:splice(起点,长度,插入元素);
arr.splice(1,0,"a") //1,2,a,3
// 替换:splice(起点,长度,替换元素);
arr.splice(1,1,"a") //1,a,3
数组的连接 concat()
var a=[1,2];
var b=[3,4];
a.cancat(b); //1,2,3,4
分隔符 join ,连接数组元素,形成字符串
var arr=[1,2,3];
arr.join("-"); //1-2-3
排序 sort()
字符串:
var arr=["boy","cat","apple"];
arr.sort(); //apple,boy,cat
数字: //默认字符串标准排序,用其他标准需要使用比较函数作为参数
var arr=[1,3,2];
arr.sort(function(n1,n2){ //比较函数,也可以单独写
return n1-n2; //返回正负数来确定两个元素的相对顺序
});
alert(arr); //1,2,3
5)
定时器
间隔型:setInterval(函数,时间); //间隔时间,一直执行函数
延时型:setTimeout(函数,时间); //只执行一次函数
关闭定时器
clearIntetval(); clearTimeout(); //需要给定时器命名变量后,指定关闭
function showA(){ alert("a"); }
var timeA=setInterval(showA,1000); //每隔1000毫秒,弹出a
clearInterval(timeA); //关闭定时器
//数码时钟:
//获取系统时间
//将系统时间设置成字符串
//将数字转换为字符串,设置相应图片路径,显示时间
//定时器执行函数
<img src="0.png"> <img src="0.png"> //时
:
<img src="0.png"> <img src="0.png"> //分
:
<img src="0.png"> <img src="0.png"> //秒
var aImg=document.getElementsByTagName("img");
function tDate(n){ //小于10的数字前面加0,并将数字变成字符串
if(n<10){ return "0"+n; }
else { return " "+n; }
}
function tick(){
var oDate=new Date(); //获取当前时间,返回值是数字
var str=tDate(oDate.getHours())+tDate(oDate.getMinutes())+tDate(oDate.getSeconds()); //6位字符串
for(var i=0;i<aImg.length;i++){
aImg[i].src=str[i]+“.png”;
}
}
setInterval(tick,1000); //在执行tick函数之前有1000毫秒延迟
tick(); //立即执行一次函数,解决延迟问题
//str[...] 获取字符串第...位的方法,浏览器不兼容
//解决办法 str.charAt(...),兼容
6)
DOM基础
子节点 children // childNodes及nodeType 需要解决兼容性问题
父节点 parentNode
offsetParent 查询定位的父节点,没有则一直往上级寻找
首位子节点、兄弟节点 //兼容问题
设置元素节点样式 getAttribute() setAttribute() removeAttribute()
//通过className获取元素
//封装成单独函数
function getByClassName(oParent,aClass) { //参数(父节点,classname)
var aResult=[]; //定义数组
var aElement=document.getElementsByTagName("*"); //获取所有元素
for(var i=0;i<aElement.length;i++) {
if(aElement[i].className==aClass) { aResult.push(aElement[i]); } //class相同的放入数组
return aResult; //返回数组
}
}
//调用
var oDiv=document.getElementsByTagName("div")[0];
var oBox=getByClassName(oDiv,"box"); //选中所有oDiv下所有class=box的元素
for(var i=0;i<oBox.length;i++){
oBox[i].style.background="#000";
}
7)
DOM操作
创建
var 子节点=ducument.createElement("元素");
父级.appendChild(子节点);
插入
父级.insertBefore(子节点,指定元素); //在指定元素之前插入元素
删除
父级.removeChlid(子节点)
//文档碎片,可用性不高 document.createDocumentFragment();
8)
//表格的操作
tBodies=getElementsByTagName("tbody")
rows=getElementsByTagName("tr")
cells=getElementsByTagName("td")
//隔行变色
//添加、删除表格行
//搜索、高亮、筛选
toLowerCase() 将字符串转换为小写 //忽略大小写
search() 找到并返回字符串出现的位置,没找到返回-1 //模糊搜索
split() 将字符串用指定符号分割成数组
//排序
- 智能社:javascript教程(基础)
- 智能社—JavaScript基础01
- 智能社JavaScript学习笔记——11 - DOM基础
- 智能社JavaScript学习笔记——JS运动基础
- 智能社JavaScript基础--1~7节课程.docx
- Javascript 教程基础
- Javascript智能社教程中关于scroll的右侧浮动框
- w3school javascript教程:JS基础
- 智能社 -- 08 深入javascript
- 商业智能(BI)基础
- JavaScript教程系列之----基础 VS BOM
- JavaScript教程系列之----DOM基础
- JavaScript基本教程之JavaScript语言的基础
- Javascript & DHTML 实例编程(教程)DOM基础和基本API
- 小白的零基础JavaScript全栈教程(1)-简介和基本语法
- 智能指针教程
- vs2008 javascript 智能提示
- javaScript 基础(未完)
- 为什么 Facebook 活得春风得意,而人人网却半死不活?
- linux虚拟机能ping通windows主机,windows主机ping不通linux虚拟机的解决办法
- 数据库的读写分离
- CentOS7打开终端快捷键
- 美团点评架构再调整,王兴凭什么同时杠上阿里滴滴饿了么
- 智能社:javascript教程(基础)
- Python限制属性
- 请求参数接收
- 自己对IAAS和PAAS的看法
- React学习笔记_动态注入reducer
- 当程序员写不出代码了,该怎么办?
- 如何学习嵌入式系统(硬件篇),含51单片机学习资料
- Android GridView同一行的Item高度不同,使其高度平齐,自动适应高度最大的item
- Java程序以后台方式在Linux上运行(nohup命令)