浅谈DOM(一)

本文详细介绍了DOM中的关键概念,包括childNodes、nodeType、children等属性的功能及使用方法,并探讨了不同浏览器间的兼容性问题。

今天我们来了解下DOM的一些基础知识。

DOM节点

1、childNodes

返回节点的所有子节点的集合

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
	<title>childNodes</title>
</head>
<body>
	<ul id="ul1">
		<li>111</li>
		<li>222</li>
		<li>333</li>
	</ul>
</body>
</html>
<script type="text/javascript">
window.onload = function(){
	var oUl = document.getElementById('ul1');
	alert(oUl.childNodes.length);
}
</script>

通过上面的代码,我们发现在ie下子节点个数是3,而在firefox下子节点个数是7,这是为什么呢?后面会告诉原因。

2、nodeType

返回节点的类型(整数)具体数值参考这里:http://www.w3school.com.cn/htmldom/dom_nodes_info.asp

回到刚才的代码,我们来看下ul下的第一个子节点的类型是什么?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
	<title>nodeType</title>
</head>
<body>
	<ul id="ul1">
		<li>111</li>
		<li>222</li>
		<li>333</li>
	</ul>
</body>
</html>
<script type="text/javascript">
window.onload = function(){
	var oUl = document.getElementById('ul1');
	alert(oUl.childNodes[0].nodeType);
}
</script>

可以看出在ie下返回的是1,也就是元素节点;在firefox下返回的是3,文本节点。

通过上面例子我们可以得到这样的信息,firefox把空格也一起算进去,所以会显示有7个子节点。

那么如何做兼容呢?答案是children

3、children

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
	<title>children</title>
</head>
<body>
	<ul id="ul1">
		<li></li>
		<li></li>
		<li></li>
	</ul>
</body>
</html>
<script type="text/javascript">
window.onload = function(){
	var oUl = document.getElementById('ul1');
	alert(oUl.children.length);	//ie => 3,firefox => 3。children可以看做childNodes兼容版
}
</script>

4、parentNode

返回当前节点的父节点,ie和firefox都兼容

例子:点击链接,隐藏整个li

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
	<title>parentNode</title>
</head>
<body>
	<ul id="ul1">
		<li>11111 <a href="javascript:;">隐藏</a></li>
		<li>22222 <a href="javascript:;">隐藏</a></li>
		<li>33333 <a href="javascript:;">隐藏</a></li>
		<li>44444 <a href="javascript:;">隐藏</a></li>
		<li>55555 <a href="javascript:;">隐藏</a></li>
	</ul>
</body>
</html>
<script type="text/javascript">
window.onload = function(){
	var oUl = document.getElementById('ul1');
	var aA = oUl.getElementsByTagName('a');
	
	for(var i = 0; i < aA.length; i++){
		aA[i].onclick = function(){
			this.parentNode.style.display = 'none';
		}
	}
}
</script>

5、首尾子节点(有兼容问题)

firstChild  //for ie

firstElementChild //for firefox

返回节点的第一个子节点

lastChild  //for ie

lastElementChild //for firefox

返回节点的最后一个子节点

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
	<title>firstChild和firstElementChild</title>
</head>
<body>
	<ul id="ul1">
		<li></li>
		<li></li>
		<li></li>
	</ul>
</body>
</html>
<script type="text/javascript">
window.onload = function(){
	var oUl = document.getElementById('ul1');
	
	//oUl.firstChild.style.background = 'red';	//for ie
	//oUl.firstElementChild.style.background = 'red';	//for firefox
	
	//for ie and firefox
	var oFirst = oUl.firstElementChild || oUl.firstChild;
	oFirst.style.background = 'red';
}
</script>

6、兄弟节点(有兼容问题)

nextSibling  //for ie

nextElementSibling //for firefox

返回节点的后一个兄弟节点

previousSibling  //for ie

previousElementSibling //for firefox

返回节点的前一个兄弟节点


PS:博客搬家了,以后不再 优快云 更新了,见谅。最新博客地址:http://www.cnblogs.com/yjzhu/

### Vue.js 的基本概念 Vue.js 是款用于构建用户界面的渐进式 JavaScript 框架[^2]。它的核心理念在于通过简洁的模板语法,将数据以声明式的方式渲染到 DOM 中[^1]。Vue.js 只专注于视图层的设计,因此非常容易与其他库集成或嵌入现有项目中[^2]。 #### 基础用法 以下是 Vue.js 的些基础功能及其使用方法: --- ### 数据绑定与插值表达式 Vue 提供了双大括号 `{{ }}` 插值语法,可以轻松地将数据插入到 HTML 元素中。例如: ```html <div id="app"> {{ message }} </div> <script> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }); </script> ``` 在这个例子中,`message` 属性被绑定到了 `<div>` 元素内部,并动态更新其内容。 --- ### 条件渲染 通过 `v-if` 指令,可以根据条件控制 DOM 元素的显示与否。例如: ```html <div id="app"> <p v-if="seen">Now you see me</p> </div> <script> var app = new Vue({ el: '#app', data: { seen: true } }); </script> ``` 当 `seen` 的值为 `true` 时,该段文字会显示;反之则隐藏[^3]。 --- ### 列表渲染 利用 `v-for` 指令,可以遍历数组并生成列表项。例如: ```html <div id="app"> <ul> <li v-for="todo in todos">{{ todo.text }}</li> </ul> </div> <script> var app = new Vue({ el: '#app', data: { todos: [ { text: 'Learn Vue.js' }, { text: 'Build an app' }, { text: 'Deploy the app' } ] } }); </script> ``` 这段代码展示了如何通过 `todos` 数组中的每项生成对应的 `<li>` 元素[^3]。 --- ### 组件化开发 Vue 支持组件化的开发模式,能够将复杂的 UI 结构拆分为多个独立的小型组件。这有助于提高代码的可维护性和重用性[^4]。例如: ```javascript // 定义个简单的子组件 Vue.component('greeting', { template: '<h1>Hello from component!</h1>' }); new Vue({ el: '#app' }); ``` 在页面中可以通过标签名调用此组件: ```html <div id="app"> <greeting></greeting> </div> ``` --- ### 总结 Vue.js 不仅提供了强大的数据绑定能力,还支持条件渲染、列表渲染以及组件化开发等多种特性。这些功能使得开发者能更高效地创建复杂而灵活的用户界面[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值