目录
语法基础
变量命名:字母数字下划线和$(不能包括除此之外的字符)
数据类型:数字、字符串、布尔值、未定义的值(undefined)和空值(null)
条件运算符:var 条件? 表达式1:表达式2;
类型转换:一个数字与字符串相加为字符串 " "+10 -->"10"字符串10
字符串转为数字:
- Number()数字型字符串转换为数字
- parseInt()和parseFloat()首字母为数字的任意字符
document.write(<br />)在页面输出一个内容
alert(\n)弹出一个对话框
注释:// or /* */
流程控制
- 顺序结构
- 选择结构
- 循环结构
顺序结构:从上到下,从左到右
选择结构:
单向选择:if
双向选择:if..else
三目运算符 ?:;
多向选择:if-elseif...else
嵌套
switch(变量or值)
{
case 1: 语句; break;
default:语句;
}
循环结构:
while(){}
do{}while;
for(;;){}
函数
定义
函数都用function(){
}定义
- 有返回值函数
- 没有返回值函数
调用
- 在超链接中调用
<a href="javascript:expressMes()">表达</a>
- 在事件中调用
<input type="button" onclick="alterMes()"value="提交" />
嵌套函数
function func(a)
{
function multi(x)
{
return x*x;
}
var m=1;
for(var i=1;i<=multi(a);i++)
{
m=m*i;
}
return m;
}
var sum=func(2)+func(3);
document.write(sum);
字符串对象
- 字符串对象:String
- 数组对象:Array
- 日期对象:Date
- 数值对象:Math
字符串名.length
字符串名.toLowerCase
字符串名.toUpperCase
字符串名.charAt(下标)
字符串名.substring【start,end)
字符串名.replace("原字符串","替换字符串 ")
字符串名.replace("正则表达式","替换字符串 ")
str.replace(/loser/g,"hello")修改所有loser
等价于
str.repalce("loser","hero")仅修改第一个
字符串名. split("分割符",获取分割后截取的前n个数)
分割字符串后系统会将这个字符串转换为一个数组(空格也是一个字符)
字符串名.indexOf(指定字符串名)首次出现下标位置
字符串名.lastIndexOf(指定字符串名)末次出现下标位置
包含的话返回字符串首字母下标或尾字母下标,不存在则返回-1
数组对象
一个数组还是可以存储不同数据类型的
- var 数组名=new Array(元素1,元素2...)
- var 数组名=【元素1,元素2...】
数组名.length
数组.slice[start,end)
document.write(arr.slice(0,2));
数组.unshift()开头加新元素
数组.shift()删除开头元素
数组.push()结尾加新元素
数组.pop()删除结尾元素
unshift() shift()
push()pop()
数组名.sort(函数名)
<script type="text/javascript">
function up(a,b)
{
return a-b;
}
function down(a,b){
return b-a;
}
var arr=[3,9,1,12,50,21];
arr.sort(up);
document.write("升序:"+arr.join(" ")+"<br />");
arr.sort(down);
document.write("降序:"+arr.join(" "));
</script>
arr.reverse()
数组名.join("连接符")
将数组连接成字符串
<script type="text/javascript">
var str1="绿叶学习网";
var str2=str1.split("").join("><");
document.write(str2+"<br/>")
var arr=str2.split("");
arr.unshift("<");
arr.push(">");
var result = arr.join("");
document.write(result);
</script>
时间对象
var 时间对象名 = new Date()
document.write(date);
时间对象.getFullYear()
时间对象.getMonth()
时间对象.getDate()
时间对象.getHours()
时间对象.getMinutes()
时间对象.getSeconds()
时间对象.getDay()0为星期日 0-7
时间对象.setFullYear(year,month,day) 4位数
时间对象.setMonth(month,day) 0-11!!!!!
时间对象.setDate(day) 1-31
时间对象.set(Hour 0-23,Minute 0-59,Second 0-59,Millisec 0-29)
数学对象
Math.属性
Math.E
Math.PI
Math.SQRT2
Math.SQRT1_2
Math.LN2
Math.LN10
Math.LOG2E
Math.LOG10E
角度:角度*Math.PI/180
Math.方法
max(a,b,c)
min(a,b,c)
sin(x)sin30°:0.4999999999994 JavaScript计算有一定精度,但是误差非常小可以忽略不计
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
floor(x)向下取整 <=x的最小整数
ceil(x)向上取整>=x的最大整数
random()
abs(x)
sqrt(x)
log(x)e为底
pow(x,y)
exp(x) 返回e的指数
随机数
Math.random()0-1的随机数
随机生成某个范围内的任意数
Math.random()*m 0~m
Math.random()*m+n n~m+n
Math.random()*m-n -n~m-n
Math.random()*m-m -m~m
随机生成某个范围内的任意整数
Math.floor(Math.random(m)) 0~m-1
Math.floor(Math.random(m+1)) 0~m
Math.floor(Math.random(m+1)+1) 1~m
Math.floor(Math.random(m-n+1)+n) 任意数~ 任意数
DOM对象
DOM(Document Object Model 文档对象模型)
DOM操作简单理解为“元素操作”
DOM采用“树形结构”用“树节点”来表示页面中的每一个元素
DOM节点12种类型
元素节点
属性节点
文本节点
节点包括元素
nodeType属性判断一个节点的类型
元素节点 1
属性节点 2
文本节点 3
所有节点都是独立的部分,元素节点可以拥有子节点
获取元素(注意复数s)
getElementById( )
getElementsByClassName( )
getElemenstByTagName( )
querySelector和querySelectorAll( )
getElementsByName( )
document.title和document.body
getElementById("Id名" )
<script>
window.onload=function(){
var oDiv = document.getElementById("div1");
oDiv.style.color = "red";
}
</script>
<body>
<div id = "div1">Javascript</div>
</body>
- 表示在整个页面加载完后执行的代码块,浏览器是从上到下解析页面的
- 给变量命名习惯以“o”开头区别于其他的变量,一眼认出DOM对象
getElementsByClassName("类名" )
<script>
window.onload=function(){
var oLi = document.getElementsByClassName("selector");
oLi[0].style.color = "red";
}
</script>
<body>
<ul id = "list">
<li class = "selector">HTML</li>
<li class = "selector">CSS</li>
<li class = "selector">Javascript</li>
</ul>
</body>
得到类数组(伪数组,只能用length和下标)
getElementsByTagName("标签名" )
可操作动态DOM的唯一方法,获取元素集合
<script>
window.onload=function{
var arr = ["HTML","CSS","Javascript","JQuery"]
var oUl = document.getElementById("lsit");
var oLi = oUl.getElementsByTagName("li");
for(vari = 0;i<oLi.length;i++)
{
oLi[i].innerHTML = arr[i];
oLi[i].style.color = "red";
}
}
</script>
<body>
<ul id = "list">
<li class = "selector">HTML</li>
<li class = "selector">CSS</li>
<li class = "selector">Javascript</li>
</ul>
</body>
- 获得ul下所有li元素(精准获取)
- innerHTML表示元素里的内容
- 使用 getElementsByTagName() 方法获取文档中的一个特定的元素使用 getElementsByTagName("p")[0];
操作动态创建的DOM
<script>
window.onload=function(){
document.body.innerHTML = "<input type='button' value = '按钮' /><input type='button' value = '按钮' /><input type='button' value = '按钮' />";
//操作动态创建的DOM对象
var oBtn = document.getElementsByTagName("input");
oBtn[0].onclick = function()
{
alert("表单元素总共有"+oBtn.length+"个");
}
}
</script>
双引号成对出现的话,Javascript无法判断哪个是一对
querySelector(CSS选择器)和querySelectorAll( CSS选择器)
<script>
document.querySelector("#main");
document.querySelector("#list li:nth-child(1)");
document.querySelectorAll("#lsit li");
document.querySelectorAll("#input:checkbox");
</script>
页面只有一个元素的时候,建议用getElementById,效率更高
getElementsByName("name名" )
只用于表单元素一般用于radio和checkbox
<script>
window.onload = function(){
var oInput = document.getElementsByName("status");
oInput[2].checked = true;
}
</script>
<body>
你的最高学历:
<label><input type="radio" name="status" value="本科" />本科</label>
<label for="硕士"><input type="radio" name="status" id="硕士" /><br />硕士</label>
<label><input type="radio" name="status" value="博士" />博士</label>
</body>
document.title和document.body
document.title = "梦想是什么";
document.body.innerHTML = "<strong style:"color:red">梦想就是一种让你感觉坚持就是幸福的东西。";
创建元素
createElement("元素名")
createTextNode("文本内容")
<script>
window.onload=function(){
//创建多元素
var oTable = document.createElement("table");
for(var i=0;i<3;i++)
{
var oTr = document.createElement("tr");
for(var j=0;j<3;j++)
{
var oTd = document.createElement("td");
var oText = document.createTextNode("内容"+j);
oTd.appendChild(oText);
oTr.appendChild(oTd);
}
oTable.appendChild(oTr);
}
document.body.appendChild(oTable);
}
</script>
JavaScript动态创建删除元素
创建元素带属性
- <input id="submit" type="button" value="提交" />
oInput.id="submit";
oIput.type="button";
oIput.value="提交";
- <img class="pic" src="img/icon_01.gif" />
oImg.className = "pic";
class以作为保留字使用
插入元素
appendChild()
insertBefore() A.insertBefore(新元素B,A.firstElementChild) //lastElementChild
<script type="text/javascript">
window.onload=function(){
var oBtn = document.getElementById("btn");
oBtn.onclick = function(){
var oUl = document.getElementById("list");
var oTxt = document.getElementById("txt");
var TextNode = document.createTextNode(oTxt.value);
var oLi = document.createElement("li");
oLi.appendChild(TextNode);
oUl.appendChild(oLi);
oUl.insertBefore(oLi,oUl.firstElementChild);
};
}
</script>
删除元素
removeChild()
复制元素
被复制元素.cloneNode(bool)
1或true:表示复制元素本身和该元素下的所有子元素
0或false:表示仅仅复制元素本身
<script type="text/javascript">
//insertBefore()
//removeChild()
//obj.cloneNode(bool)1全部 0自身
window.onload=function(){
var oBtn = document.getElementById("btn");
var oUl = document.getElementById("list");
document.body.appendChild(oUl.cloneNode(1));
oBtn.onclick = function()
{
var oUl = document.getElementById("list");
var oTxt = document.getElementById("txt");
var textNode = document.createTextNode(oTxt.value);
var oLi = document.createElement("li");
oLi.appendChild(textNode);
oUl.insertBefore(oLi,oUl.firstElementChild);
oUl.removeChild(oUl.lastElementChild);
}
/*
1.获得无序列表元素和单行文本元素
2.以文本框的值为内容创建文档节点
3.创建li
4.文档节点插入li
5.li插入无序列表
*/
}
</script>
<body>
<ul id="list">
<li>HTMl</li>
<li>CSS</li>
<li>JavaScript</li>
</ul>
<input type="txt" id="txt"/>
<input id="btn" type="button" value="输入"/>
</body>
替换元素
父元素.replaceChild(new,old)
<script>
window.onload=function(){
var oBtn =document.getElementById("btn");
oBtn.onclick=function(){
var e1 = document.getElementsByTagName("p")[0];
var oTag = document.getElementById("tag");
var oTxt = document.getElementById("txt");
var e2 = document.createElement(oTag.value);
var textNode = document.createTextNode(oTxt.value);
e2.appendChild(textNode);
document.body.replaceChild(e2,e1);
}
}
</script>
<body>
<p>JavaScript</p>
<hr />
输入标签:<input id="tag" type="text"/><br />
输入内容:<input id="txt" type="text"/><br />
<input type="button" id="btn" value="替换"/>
</body>