JavaScript学习(三)

JavaScript DOM基础

<!DOCTYPE>
<html>
	<head>
		<meta charset="utf-8">
		<title>子节点</title>
		<style type="text/css">
			#div1 {width: 200px; height: 200px; background: red;}
			#div2 {width: 50px; height: 50px; background: #CCC; position: absolute; left: 50px; top: 50px}
		</style>
		<script type="text/javascript">
			// 节点知识
			// 此处,div的父节点是body,ul的父节点是ul
			window.onload = function() {
				var oUl = document.getElementById('ul1');
				// 输出的是5,即5个节点
				// 因为空白处也算一个节点,叫文本节点
				// 标签处算是一个节点,叫元素节点
				// 所以,在ul中有三个本文节点,两个元素节点总共5个节点
				// 文本节点没有style
				// 所以如果用循环来给childNodes设置背景的话,会出错
				// 属性nodeType用来返回节点的类型
				// nodeType == 3  ->  文本节点
				// nodeType == 1  ->  元素节点
				alert(oUl.childNodes.length);
				for (var i = 0; i < oUl.childNodes.length; i++) {
				    alert(oUl.childNodes[i].nodeType);
				};

				// DOM还有一个属性,children,children只包括元素,不包括文本
				alert(oUl.children.length);

				// parentNode父节点
				// var aA = document.getElementsByTagName('a');
				for (var i = 0; i < aA.length; i++) {
				    aA[i].onclick = function() {
				        // 这里的this指的是a标签
				        this.parentNode.style.display = 'none';
				    }
				};

				// offsetParent是获取用来定位的父级节点
				// 在上面的div1样式表中,将position: relative去掉的话,
				// 下面语句返回的是body,就不是div了
				// 因为div2的相对定位变成了body
				var oDiv2 = document.getElementById('div2');
				alert(oDiv2.offsetParent);

			}
		</script>
	</head>
	<body>
		<!-- <div>
			<ul id="ul1">
				<li>fdfasfdsafsafa<a href="javascript:;">隐藏</a></li>
				<li>fggnntytytw<a href="javascript:;">隐藏</a></li>
				<li>321fa<a href="javascript:;">隐藏</a></li>
				<li>ff432asffsafa<a href="javascript:;">隐藏</a></li>
			</ul>
		</div> -->

		<div id="div1">
			<div id="div2"></div>
		</div>
	</body>
</html>
<!DOCTYPE>
<html>
	<head>
		<meta charset="utf-8">
		<title>firstChild和firstElementC</title>
		<script type="text/javascript">
			window.onload = function() {
				var oUl = document.getElementById('ul1');
				// firstChild在低版本的浏览器中适用
				// firstChild指的是第一个文本节点
				// 所以设置背景颜色会出错
				// oUl.firstChild.style.background = 'red';

				// 高版本的浏览器中用firstElementChild
				// oUl.firstElementChild.style.background = 'red';

				if (oUl.firstElementChild) {
					oUl.firstElementChild.style.background = 'red';
				} else {
					oUl.firstChild.style.background = 'red';
				};

				// DOM方式获取元素的属性
				// 前面讲过用.和[]来获取元素的属性
				// DOM获取元素属性的用法比较少,先记住,有必须用的时候
				var oTxt = document.getElementById('txt');
				var oBtn = document.getElementById('btn');
				oBtn.onclick = function() {
					oTxt.setAttribute('value', 'dfsafasfasdf');
				}
			}
		</script>
	</head>
	<body>
		<ul id="ul1">
			<li></li>
			<li></li>
			<li></li>
		</ul>

		<input id="txt" type="text" />
		<input id="btn" type="button" value="按钮" />
	</body>
</html>
<!DOCTYPE>
<html>
	<head>
		<meta charset="utf-8">
		<title>className获取标签</title>
		<script type="text/javascript">
			// className获取标签就是将所有标签或取出来然后通过className过滤标签
			function getClassName(oParent, oClassName) {
				// 获取父节点下的所有子节点
				var oElem = oParent.getElementsByTagName('*');
				var arry = [];
				for (var i = 0; i < oElem.length; i++) {
					if (oElem[i].className == oClassName) {
						arry.push(oElem[i]);
					};
				};
				return arry;
			}
			window.onload = function() {
				var oUl = document.getElementById('ul1');
				var arryElem = getClassName(oUl, 'box');
				for (var i = 0; i < arryElem.length; i++) {
					arryElem[i].style.background = 'red';
				};
			}
		</script>
	</head>
	<body>
		<div>
			<ul id="ul1">
				<li class="box"></li>
				<li></li>
				<li class="box"></li>
			</ul>
		</div>
	</body>
</html>

JavaScript DOM操作应用

<!DOCTYPE>
<html>
	<head>
		<meta charset="utf-8">
		<title>创建元素</title>
		<script type="text/javascript">
			window.onload = function() {
				// 正序插入
				var oBtn = document.getElementById('btn');
				var oUl = document.getElementById('ul1');
				var oTxt = document.getElementById('txt');
				oBtn.onclick = function() {
					var oLi = document.createElement('li');
					oLi.innerHTML = oTxt.value;
					oUl.appendChild(oLi);
				}

				// 倒序插入
				var oBtn = document.getElementById('btn');
				var oUl = document.getElementById('ul1');
				var oTxt = document.getElementById('txt');
				var aA = null;

				oBtn.onclick = function() {
					var aLi = document.createElement('li');
					var oLi = document.getElementsByTagName('li');
					aLi.innerHTML = oTxt.value + "<a href='javascript:;'>删除</a>";
					aA = document.getElementsByTagName('a');
					// 在一组li标签的第一个标签进行插入
					oUl.insertBefore(aLi, oLi[0]);
					for (var i = 0; i < aA.length; i++) {
						aA[i].onclick = function() {
							// 删除插入的标签
							oUl.removeChild(this.parentNode);
						}
					};
				}
			}
		</script>
	</head>
	<body>
		<input id="txt" type="text" />
		<input id="btn" type="button" value="添加li元素" />
		<ul id="ul1"></ul>
	</body>
</html>
<!DOCTYPE>
<html>
	<head>
		<meta charset="utf-8">
		<title>表格操作</title>
		<style type="text/css">
			#div1 {margin: 50px}
		</style>
		<script type="text/javascript">
			window.onload = function() {
				var oTab = document.getElementById('tab');
				var oTxt1 = document.getElementById('txt1');
				var oTxt2 = document.getElementById('txt2');
				var oBtn = document.getElementById('btn');
				// tBodies属性,取得tbody标签下的所有元素
				// 因为一个表格中可以有很多的body,所以tbody获取的参数是负数形式
				// 还有属性,tHead(表头),tFoot(表尾)
				// 一般写表格tbody省略了,浏览器可以自动的加上
				// rows取得第n行的元素
				// cells取得第n列的元素
				// alert(oTab.tBodies[0].rows[1].cells[1].innerHTML);			
				// toLowerCase()忽略大小写
				
				oBtn.onclick = function() {
					var oTr = document.createElement('tr');
					var oTd = document.createElement('td');
					var oNum = oTab.tBodies[0].rows.length;
					
					oTd.innerHTML = parseInt(oTab.tBodies[0].rows[oNum - 1].cells[0].innerHTML) + 1;
					oTr.appendChild(oTd);

					var oTd = document.createElement('td');
					oTd.innerHTML = oTxt1.value;
					oTr.appendChild(oTd);

					var oTd = document.createElement('td');
					oTd.innerHTML = oTxt2.value;
					oTr.appendChild(oTd);

					var oTd = document.createElement('td');
					oTd.innerHTML = "<a href='javascript:;'>删除</a>";
					oTr.appendChild(oTd);

					oTab.tBodies[0].appendChild(oTr);

					var aA = document.getElementsByTagName('a');
					for (var i = 0; i < aA.length; i++) {
						aA[i].onclick = function() {
							oTab.tBodies[0].removeChild(this.parentNode.parentNode);
						}
					};

					for (var i = 0; i < oTab.tBodies[0].rows.length; i++) {
						oTab.tBodies[0].rows[i].onmouseover = function() {
							// 不写this的话,没反应
							this.style.background = '#CCC';
						}
						oTab.tBodies[0].rows[i].onmouseout = function() {
							this.style.background = '';
						}
					};
				}
			}
		</script>
	</head>
	<body>
		<div align="center">
			姓名:<input id="txt1" type="text" />
			年龄:<input id="txt2" type="text" />
			<input id="btn" type="button" value="添加表单" />
		</div>
		<div id="div1" align="center">
			<table id="tab" border="1" width="500px">
				<thead>
					<td>ID</td>
					<td>姓名</td>
					<td>年龄</td>
					<td>操作</td>
				</thead>
				<tbody>
					<tr>
						<td>1</td>
						<td>Tom</td>
						<td>22</td>
						<td></td>
					</tr>
					<tr>
						<td>2</td>
						<td>Jack</td>
						<td>31</td>
						<td></td>
					</tr>
					<tr>
						<td>3</td>
						<td>smith</td>
						<td>322</td>
						<td></td>
					</tr>
					<tr>
						<td>4</td>
						<td>fd</td>
						<td>322</td>
						<td></td>
					</tr>
					<tr>
						<td>5</td>
						<td>ifdsah</td>
						<td>322</td>
						<td></td>
					</tr>
				</tbody>
			</table>
		</div>
	</body>
</html>
<!DOCTYPE>
<html>
	<head>
		<meta charset="utf-8" />
		<title>javaScript_模糊搜索</title>
		<script type="text/javascript">
			var str = 'abcdefg';
			// search()方法找到后返回字母下标,没找到就返回-1
			// 进行模糊搜索的话,就判断search()函数返回值是否是-1
			// 不是-1的话就把结果都显示出来
			// 即,包含关键字的搜索结果都会被检索出来

			// appendChild()是先把元素从原有的父级上删掉,然后放到插入的地方
			alert(str.search('c'));
		</script>
	</head>

	<body>
	</body>
</html>







你可能感兴趣的:(JavaScript学习(三))