JS基础 DOM对象

JS基础 DOM对象

获取节点

getElementById() 根据id获取dom对象,如果id重复,那么以第一个为准

//按照id获取
function testById(){
	var p = document.getElementById("p1");
	console.log(p);
}

getElementsByTagName() 根据标签名获取dom对象数组

//按照标签名获取
function testByTagName(){
	var inputs = document.getElementsByTagName("input");
	console.log(inputs);
}

getElementsByClassName() 根据样式名获取dom对象数组

//按照class获取
function testByClass(){
	var paras = document.getElementsByClassName("para");
	console.log(paras);
}

getElementsByName() 根据name属性值获取dom对象数组,常用于多选获取值

//按照name获取
function testByName(){
	var hobbys = document.getElementsByName("hobby");
	console.log(hobbys);
	var text = document.getElementsByName("txt")[0];
	console.log(text);
}

注意:
a标签正常会执行跳转的操作,设置href=“javascript:void(0)” 表示伪协议 将不会跳转

​ 操作 dom 必须等节点初始化完毕后,才能执行
​ 处理方式两种:
​ (1)把 script 调用标签移到html末尾即可;
​ (2)使用onload事件来处理JS,等待html 加载完毕再加载 onload 事件里的 JS。

​ window.onload = function(){ }

创建和添加元素

创建节点和插入节点
createElement() 创建一个新的节点,需要传入节点的标签名称,返回创建的元素对象
createTextNode() 创建一个文本节点,可以传入文本内容
innerHTML 也能达到创建节点的效果,直接添加到指定位置了
write() 将任意的字符串插入到文档中
appendChild() 向元素中添加新的子节点,作为最后一个子节点
如果追加的元素不存在,则添加新的;如果追加的元素存在,则会将 原有的元素添加到新的位置(剪切)
insertBefore() 向指定的已有的节点之前插入新的节点
newItem:要插入的节点
exsitingItem:参考节点 需要参考父节点

<button onclick="addPara();">添加段落</button>
<button onclick="addImg();">添加图片</button>
<button onclick="addTxt();">添加文本框</button>
<button onclick="addOptions()">添加选项</button>
<select name="music">
	<option value="-1">你心内的一首歌</option>
	<option value="0">南山南</option>
	<option value="1">喜欢你</option>
</select>
<hr />
<div id="container"></div>
		
<span>周杰伦</span>
<script type="text/javascript">
	//获取需要添加节点的位置
	var div = document.getElementById("container");
			
	//添加段落
	function addPara(){
		//方式一
		//创建元素节点
		/* var p = document.createElement("p");
		//创建文本节点
		var text = document.createTextNode("段落标签");
		//将文本节点追加到元素节点的内部
		p.appendChild(text);
		//将元素追加到div的内部
		 */
		
		
		//方式二
		//创建元素节点
		/* var p = document.createElement("p");
		p.innerHTML = "段落方式二";
		console.log(p); 
		div.appendChild(p);*/
		
		
		//方式三
		var p = "<p>段落方式三</p>";
		//给div设置内容
		div.innerHTML += p;
		
	}
	
	//添加图片
	function addImg(){
		//方式一
		//创建一个图片
		/* var img = document.createElement("img"); 
		//设置图片属性
		img.src = "img/lbw.jpg";
		img.width = "100";
		img.height = "100";
		//将图片追加到指定位置
		div.appendChild(img); */
				
		//方式二
		//创建一个图片
		/* var img = document.createElement("img"); 
		//设置图片属性
		img.setAttribute("src","img/lbw.jpg");
		img.setAttribute("width","100");
		img.setAttribute("height","100");
		//将图片追加到指定位置
		div.appendChild(img); */
				
		//方式三
		var str = "<img src='img/lbw.jpg' width='100' height='100' />";
		div.innerHTML += str;
	}
		
	//添加文本框
	function addTxt(){
		//方式一
		var input = document.createElement("input"); 
		/*input.type = 'text';
		input.name = 'uname';
		 */
		
		//方式二
		// setAttribute设置属性
		input.setAttribute("type",'text');
		div.appendChild(input);
		
	}

	//添加选项
	function addOptions(){
		//用户输入歌曲名称
		var sname = prompt("请输入歌曲名称");
		
		//获取下拉框的节点
		var select = document.getElementsByName("music")[0];
		
		//方式一
		//创建下拉选项
		/* var option = document.createElement("option");
		//设置下拉选项的内容
		option.innerHTML = sname;
		//设置属性
		option.value = 2;
		//将下拉选项追加到下拉框中
		select.appendChild(option); */
		
		//方式二
		/* var options = select.options; //下拉框的所有下拉选项
		//创建下拉选项
		var newOption = document.createElement("option");
		newOption.innerHTML = sname;
		//将选项添加到下拉框数组中
		options.add(newOption); */
		
		//方式三
		var options = select.options; //下拉框的所有下拉选项
		//创建下拉选项
		var newOption = new Option();
		console.log(newOption);
		newOption.innerHTML = sname;
		//将选项添加到下拉框数组中
		options.add(newOption);
	}

	//将任意的字符串插入到文档中
	// document.write("到爱打架欧艾斯");
	
	//insertBefore
	//获取目标位置
	var select = document.getElementsByName("music")[0];
	//获取需要移动的元素节点
	var zjl = document.getElementsByTagName("span")[0];
	//参考父节点   
	var parent = select.parentElement;
	parent.insertBefore(zjl,select);
	
</script>

间接查找节点

childNodes 返回元素的一个子节点的数组
firstChild 返回元素的第一个子节点
lastChild 返回元素的最后一个子节点
nextSibling 返回元素的下一个兄弟节点
parentNode 返回元素的父节点
previousSibling 返回元素的上一个兄弟节点

<div id="div1">
	<span>span 1</span><span>span 2</span>
	<div>块级元素</div>
</div><span>兄弟节点</span>

<script type="text/javascript">
	var div1 = document.getElementById("div1");
	//childNodes
	var childNodes = div1.childNodes;
	console.log(childNodes);
	//firstChild
	console.log(div1.firstChild);
	//lastChild
	console.log(div1.firstChild);
	//nextSibling
	console.log(div1.nextSibling);
	//parentNode
	console.log(div1.parentNode);
	//previousSibling
	console.log(div1.previousSibling);
</script>

删除节点

removeChild() 从元素中移除子节点
目标节点.父节点.removeChild(目标节点);

function fun(){
	//获取目标节点
	var div = document.getElementsByTagName("div")[0];
	//删除
	div.parentElement.removeChild(div);
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值