SentralLiu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1 获取DOM对象
    DOM: 文档对象模型; html所有标签都属于文档,所有通过文档对象可以拿到所有标签
    应用: 获取元素对象(标签对象) 

1.使用id获取元素

var obj =  document.getElementById("a"); 

2.使用class获取元素 (class获取的是集合)

var obj = document.getElementsByClassName("yy")[0];

3.使用标签获取元素(标签获取的是集合)

var obj = document.getElementsByTagName("h1")[0];

应用场景:通过获取到元素,我们就可以操作标签内容,属性,样式,事件等
 

2 修改元素内容
 


/* 案例:修改h1的内容 */
var obj = document.getElementsByTagName("h1")[0];
//alert(obj.innerHTML);  //取值
//obj.innerHTML = "<a href='#'>修改标题</a>";  //带标签格式的修改内容
obj.innerText = "<a href='#'>修改文本</a>"; //纯文本格式的修改内容

3 修改元素属性

var obj = document.getElementById("img");
			obj.src = "../img/d.jpg";
			obj.width = 200;
			obj.height = 250;

4 修改元素样式

var obj = document.getElementsByTagName("h1")[0];
			obj.style.color = "red";

5.事件(重点)

        1 点击事件与this

<!-- 案例:点击事件触发,然后触发修改内容 -->
<h1 onclick="myclick()" id="a">标题1</h1>
<!-- this使用:与java类似,代表当前对象,当前标签对象 -->
<h1 onclick="this.innerHTML='赵本山'" id="a">标题2</h1>
<!-- this作为参数传递,在实现中则无需document获取对象 -->
<h1 onclick="myclick2(this)">标题3</h1>
<script>
	function myclick(){
	    alert("点击事件");
		var obj = document.getElementById("a");
		obj.innerHTML="刘德华";
	}
	function myclick2(o){
	o.innerHTML="刘亦菲";
	}
</script>

        2 点击按钮事件

<!-- 案例:点击按钮,修改标题1的内容 -->
<!-- 扩展了解:通过对象调事件  -->
<h1 id="h">标题1</h1>
<input  type="button" value="修改标题" onclick="btn()" />
<input  type="button" value="修改标题2" id="btn" />
<script>
	function btn(){
	    var obj = document.getElementById("h");
		obj.innerHTML = "漂亮标题";
	}
	var btn = document.getElementById("btn");
	btn.onclick=function(){
	alert("通过元素调事件");
}
</script>

        3 获取与失去焦点事件

<input type="text"  value="请输入邮箱地址" 
	onfocus="myfocus(this)" onblur="myblur(this)" />
<script>
	/*获取与失去焦点
	案例:失去焦点时在文本框显示,'请输入邮箱地址',获取焦点时,清除该内容
	分析: 点击当前控件-当前控件则获取到焦点;点击其他-当前控件失去焦点
	 onfocus:获取焦点事件     onblur:失去焦点事件
	*/
			
	function myfocus(o){
		if(o.value=="请输入邮箱地址"){
			o.value = "";
		}
	}
			
	function myblur(o){
		debugger  //js中的debug调试  需要将控制台打开-f12
		if(o.value==""){  //如果去除左右空格,可以+trim()
			o.value = "请输入邮箱地址";
		}
	}	
</script>

        4 级联列表更改事件

 案例:有两个级联下拉列表,一个显示省份,一个显示城市;变更省份后,联动变更城市
 分析:onchange事件,获取省份选项内容,根据判断,显示不同的值在城市标签中即可

var city = document.getElementById("city");
function change(province){
	if(province.value=="hn"){ //在js中直接用==判断字符串;在java中使用equals
		//显示湖南城市
		city.innerHTML="<option>长沙</option><option>郴州</option><option>永州</option>"
	}else if(province.value=="hb"){
		city.innerHTML="<option>武汉</option><option>荆州</option>";
	}
}

        5 监听事件(了解)

addEventListener() 方法

  • 在用户点击按钮时触发监听事件

document.getElementById("myBtn").addEventListener("click", displayDate);
  • addEventListener() 方法用于向指定元素添加事件句柄。

  • addEventListener() 方法添加的事件句柄不会覆盖已存在的事件句柄。

  • 你可以向一个元素添加多个事件句柄。

  • 你可以向同个元素添加多个同类型的事件句柄,如:两个 "click" 事件。

  • 你可以向任何 DOM 对象添加事件监听,不仅仅是 HTML 元素。如: window 对象。

  • addEventListener() 方法可以更简单的控制事件(冒泡与捕获)。

  • 当你使用 addEventListener() 方法时, JavaScript 从 HTML 标记中分离开来,可读性更强, 在没有控制HTML标记时也可以添加事件监听。

你可以使用 removeEventListener() 方法来移除事件的监听。

参数名描述
event事件的类型 (如 "click" 或 "mousedown")
function事件触发后调用的函数
useCapture用于描述事件是冒泡还是捕获。该参数是可选的

addEventListener() 方法允许向同个元素添加多个事件,且不会覆盖已存在的事件:

element.addEventListener("click", myFunction);
element.addEventListener("click", mySecondFunction);

你可以向同个元素添加不同类型的事件:

element.addEventListener("mouseover", myFunction);
element.addEventListener("click", mySecondFunction);
element.addEventListener("mouseout", myThirdFunction);
  • addEventListener() 方法允许你在 HTML DOM 对象添加事件监听, HTML DOM 对象如: HTML 元素, HTML 文档, window 对象。或者其他支出的事件对象如: xmlHttpRequest 对象。

  • 当用户重置窗口大小时添加事件监听:

window.addEventListener("resize", function(){
    document.getElementById("demo").innerHTML = sometext;
});
  • 事件传递有两种方式:冒泡false与捕获true。

removeEventListener() 方法移除由 addEventListener() 方法添加的事件句柄:

        6.操作元素

  • 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素。

    • 创建元素:document.createElement()

    • 追加元素:appendChild()

<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另一个段落。</p>
</div>
​
<script>
var para=document.createElement("p");
var node=document.createTextNode("这是一个新段落。");
para.appendChild(node);
​
var element=document.getElementById("div1");
element.appendChild(para);
</script>
  • 删除已有的 HTML 元素

  • 使用方法:removeChild()

<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另一个段落。</p>
</div>
<script>
var parent=document.getElementById("div1");
var child=document.getElementById("p1");
parent.removeChild(child);
</script>

必须是父级标签删除子标签

某单元格操作删除表格的一行

function del(obj){
				//自杀
				obj.parentElement.parentElement.removeChild(obj.parentElement);
			}

posted on 2021-11-25 21:12  SentralLiu  阅读(23)  评论(0)    收藏  举报