交互三步曲:获取标签,添加事件,事件发生时的反馈
一、获取标签
1.通过id获取
语法:
document.getElementById("id名"):获取到的是一个唯一标签
//通过id获取元素 var FS = document.getElementById("fs"); //添加事件 标签.onclick = function(){ 事件发生时要执行的操作 } FS.onclick = function(){ alert("easy"); }
2.通过标签名获取
语法:
document.getElementsByTagName("标签名") : 获取整个文档中对应标签名的标签
父元素.getElementsByTagName("标签名") : 获取对应父元素中对应标签名的标签
//通过标签名获取元素:document.getElementsByTagName("标签名") var LI = document.getElementsByTagName("li"); console.log(LI); //HTMLCollection(5) 元素集合 console.log(LI.length); //5 获取元素集合的个数 console.log(LI[2]); //通过下标获取元素,下标从0开始 //元素集合是一个整体,必须通过下标一个一个取出来使用 LI[2].onclick = function(){ alert("hello world"); } LI[1].onclick = function(){ alert("hello world"); } //父元素.getElementsByTagName("标签名") : 获取对应父元素中对应标签名的标签 var FS = document.getElementsByTagName("fs")[1]; var LI = FS.getElementsByTagName("li"); console.log(LI);
3.通过类名获取(IE 8不兼容)
语法:
document.getElementsByClassName("类名") : 获取整个文档中对应类名的标签
父元素.getElementsByClassName("类名") : 获取对应父元素中对应类名的标签
//通过类名获取元素:IE8-不兼容 var LI = document.getElementsByClassName("box"); LI[0].onclick = function(){ alert("浮生"); }
<注意>
通过class和标签获取的都是元素集合,不管是几个元素都不能直接使用,必须通过下标获取到具体的元素进行操作==
二、添加事件
1.事件
添加在标签上,可以被浏览器监听到的一些行为
2.语法
标签.事件 = function(){
事件触发时执行 的代码
}
3.鼠标事件
- onclick:点击
- onmouseover/onmouseenter:鼠标移入(悬停)
- onmoueout/onmouseleave:鼠标移出
- onmousemove:鼠标移动
- onmouseup:鼠标抬起
- onmousedown:鼠标按下
- ondblclick : 双击
- oncontextmenu:右击
//添加事件 标签.事件名 = function(){ 事件发生时执行的操作 } Div.onclick = function(){ console.log("pink"); } //onmouseover:鼠标移入 Div.onmouseover = function(){ console.log("鼠标移入"); }
三、JavaScript操作标签
<div id=‘box’ class='box'>内容</div>
样式:height width
1.操作标签内容
1.1标签内容
开始标签和结束标签中间的都是标签内容
1.2操作表单元素内容
-
获取内容: var 变量 = 表单元素.value
-
设置内容: 标签.value = "值"
//给button添加点击事件 Btns[0].onclick = function(){ //获取输入框的值 :var 变量 = 表单元素.value var v = Inp.value; console.log(v); } //设置 Btn[1].onclick = function(){ // 设置内容: 标签.value = "值" Inp.value = "hello world"; } //所有的表单元素都是 标签.value var v = Sel.value; console.log(v);
1.3操作闭合标签内容
-
获取:var 变量 = 标签.innerHTML / 标签.innerText
-
设置:标签.innerHTML / 标签.innerText = “值”
-
innerHTML和innerText
都是操作闭合标签内容,都会覆盖原有的内容 innerHTML能识别标签,innerText不能识别标签
/* 获取:var 变量 = 标签.innerHTML / 标签.innerText 设置:标签.innerHTM / 标签.innerText = “值” innerHTML:识别标签,覆盖原有的内容 innerText:只操作文本不识别标签,覆盖原有的内容 */ //1.获取元素 var Div = document.getElementsByTagName("div")[0]; //2.获取标签内容 var html = Div.innerHTML; console.log(html); // <p>代码之难,难于上青天</p> var text = Div.innerText; console.log(text); // 代码之难,难于上青天 //3.设置标签内容,覆盖原有内容 //Div.innerHTML = "<p>蚕丛及鱼凫,开国何茫然!</p>"; //Div.innerText = "<p>蚕丛及鱼凫,开国何茫然!</p>"; //4.追加 之前的 + 现在的 //Div.innerHTML = Div.innerHTML + "<p>蚕丛及鱼凫,开国何茫然!</p>"; Div.innerHTML += "<p>蚕丛及鱼凫,开国何茫然!</p>";
2.操作标签属性
<div id class title > 开始标签中的属性
-
获取: var 变量 = 标签.属性名
-
设置:标签.属性名 = 属性值
-
特殊:class是关键字,不能直接使用,class---className
//1.获取元素 var Div = document.getElementsByTagName("div")[0]; //2.获取 var 变量 = 标签.属性名 var s = Div.title; console.log(s); //3.设置 标签.属性名 = 属性值 Div.id = "haha"; //4.设置class Div.className = "curl";
3.操作标签样式
写在style标签中,width,height,background
3.1设置
标签.style.属性名 = 值
3.2特殊
js中不允许出现-,要使用驼峰标识
//2.设置元素样式 : 标签.style.属性名 = 值 ,js操作标签样式都是行间 //width:200,height:200,background:green Div.style.width = "200px"; Div.style.height = "200px"; Div.style.background = "yellow"; //特殊:js中不允许出现-,要使用驼峰标识 Div.style.fontSize = "20px";
3.3cssText
//获取元素 var Div = document.getElementsByTagName("div")[0]; //标签.style.cssText = "css样式" // Div.style.cssText = "width:200px;height:200px;background:green"; //cssText重写style属性 // Div.style.cssText = "width:200px;background:green"; Div.style.width = "200px"; Div.style.background = "green";