实现HTML页面动态处理

  • HTML DOM 可以可以对HTML中的元素进行删除,增加的操作,要操作HTML DOM可以使用JavaScript的语言对HTML DOM进行访问.
  • 原html文件
<html>
	<head>
		<title>欢迎页面!</title>
		<meta charset="utf-8"/>
	</head>
	<body>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<div>
			<span id="10">Hello World!</span>
		</div>
	</body>
</html>
  • 使用getElementsByTagName()方法取得所有span元素,
	<script type="text/javascript">
		window.onload = function	(){
			//取得"span元素
			var spanELes = document.getElementsByTagName("span");
			
		}
	</script>
  • 动态设置元素样式,假设有如下样式,将偶数位的span元素设置为init0样式,将奇数位的span设置为init1的样式
<style type="text/css">
	.init0{
		color:green;
		font-size:20px;
		display:block;
	}
	.init1{
		color:red;
		font-size:20px;
		display:block;
	}
</style>
  • 循环得到的span节点集合,设置每个节点的class属性
	<script type="text/javascript">
		window.onload = function(){
			//取得"span元素
			var spanELes = document.getElementsByTagName("span");
			for(var x = 0; x < spanELes.length; x ++){
				spanELes[x].setAttribute("class","init"+(x%2));
			}
			
		}
	</script>
  • 页面运行效果

在这里插入图片描述

删除元素

  • 再删除元素的时候需要注意的是,如果使用getELementsByTagName()方法得到一个节点的集合,如果使用removeChild()方法删除集合中的一个元素,则这个集合的长度会发生改变.
  • 假设现在的html中的内容变为如下, 如果此时要删除所有带有"del"内容的span元素
<html>
	<head>
		<title>欢迎页面!</title>
		<meta charset="utf-8"/>
	</head>
	<body>
		<span>Hello World! del</span>
		<span>Hello World! del</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World del !</span>
		<span>Hello World!</span>
		<span>Hello del World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello World!</span>
		<span>Hello del World!</span>
		<span>Hello World!</span>
		<div>
			<span id="10">Hello World!</span>
		</div>
	</body>
</html>
  • 先使用getElementsByTagName()取得每一个span属性
  • 然后使用firstChild.nodeValue得到每一个span节点的内容
  • 然后将带有"del" 内容的节点保存到一个数组中.
  • 再使用parentNode得到要删除节点的父节点
  • 再使用removeChild()删除所有子节点

	<script type="text/javascript">
		window.onload = function(){
			//取得"span元素
			var spanEles = document.getElementsByTagName("span");
			//得到原集合的长度
			var len = spanEles.length;
			//保存要删除的子节点数组
			var delList = new Array();
			//操作数组的下标
			var foot = 0;
			for(var x = 0; x < spanEles.length; x ++){
				spanEles[x].setAttribute("class","init1");
				//得到每个节点的内容
				var strValue = spanEles[x].firstChild.nodeValue;
				//判断是是否有"del"字符的节点
				if(strValue.indexOf("del")!=-1){
					//将每一个要删除的内容保存到数组中
					delList[foot ++] = spanEles[x];
				}
			}
			//循环删除数组中的每一个节点
			for(var j = 0; j < delList.length; j++){
				//得到当前节点的父节点,然后删除父节点的子元素
				delList[j].parentNode.removeChild(delList[j]);
			}
			
		}
	</script>
  • 运行结果

在这里插入图片描述

取得属性内容

  • 假设现在的html文件内容为,如果要取得id为:"10"的span元素中的属性内容
<html>
	<head>
		<title>欢迎页面!</title>
		<meta charset="utf-8"/>
	</head>
	<body>
		<div><span id="10 class="init0" >Hello World!</span></div>
	</body>
</html>
  • 可以使用document.getElementById()方法取得一个指定id的元素-,正常情况下可以直接使用"元素.属性"取得元素内容
		window.onload = function(){
		//取得span属性
			var spanEle = document.getElementById("10");
			//向控制台输出,属性内容
			console.log("id = "+spanEle.id);
			console.log("class = "+spanEle.className);
		}
  • 控制台输出

在这里插入图片描述

  • 如果直接使用"元素.属性" 的方式取得属性内容,表示这个属性已经被定义过了,而一些我们自定义的属性,是无法使用这样的方式取得属性内容的,但是也可以通过以下的方法取得属性内容
Element.getAttribute("属性名称");
  • 例如html中定义有如下的内容
<div><span id="10" class="init0" obj="spanObj" >Hello World!</span></div>
  • 如果要取得span元素中的obj属性内容,可以通过以下方式
	<script type="text/javascript">
		window.onload = function(){
		//取得span属性
			var spanEle = document.getElementById("10");
			//向控制台输出,属性内容
			console.log("obj = "+ spanEle.getAttribute("obj"));
		}
	</script>

在这里插入图片描述

  • 使用DOM控制元素的属性,更加的灵活
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值