DOM选择器

DOM
选择器以及内容文本操作

原理:将整个HTML看作一个大对象,对象嵌套对象

与JavaScript的关系:JavaScript定义了一个函数后,通过DOM对元素进行选取和操作。

一、查找

			直接 
				document.getElementById('i1')
				document.getElementsByName          #s,获取的是多个元素[]列表,根据name属性获取标签集合
				document.getElementsByClassName     根据class属性获取标签集合
				document.getElementsByTagName       根据标签名获取标签集合
			间接
				parentElement           // 父节点标签元素
				children                // 所有子标签
				firstElementChild       // 第一个子标签元素
				lastElementChild        // 最后一个子标签元素
				nextElementtSibling     // 下一个兄弟标签元素
				previousElementSibling  // 上一个兄弟标签元素

 


二、操作
文本操作:

			obj.innerText  #获取该标签内文本,忽略内部标签 #不能对[]操作
			obj.innerHTML  #包含了内部标签和文本
			obj.value      #获取当前标签的值,一般针对input等
				input
				select	   select标签有selectedIndex,0,1,2等
				textarea	
					
		
			obj.innerText = "<a href='http://www.baidu.com'>百度</a>";  #显示为文本
			obj.innerHTML = "<a href='http://www.baidu.com'>百度</a>";  #显示为超链接

  

例子:输入框提示“请输入关键字”和移除
onfocus() 光标移至时触发
onblur() 光标移开时触发

现在html的input标签有了 placeholder = ‘请输入关键字’,功能类似

样式操作:

			.className='c1'    		#创建class属性,整体操作
			.classList     			#获取所有的class列表,首单词小写,后面所有单词大写
			.classList.add('c2')	#增加指定样式 
			.classList.remove('c2')	#删除 
		
			obj.style
				.fontSize = '16px'  # 不同于css
				.color
				.backgroundColor

 

属性操作

			obj.attributes                      #获取所有属性
			obj.setAttribute('xxxx','alex');
			obj.removeAttribute('value')    	#去掉value属性值
			
			obj.src  修改链接

  

标签创建:

			字符串形式:var tag = "<input type='text'/><hr />";
			对象形式: 	var tag = document.createElement('input');
						tag.setAttribute('type','text');

  

标签操作:

			方式一:对应字符串形式创建标签
				var tag = "<input type='text'/><hr />";
				document.getElementById('i1').insertAdjacentHTML('beforeEnd',tag);
				
				注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'
				
			方式二:对象形式创建标签
				var tag = document.createElement('input');
				tag.setAttribute('type','text');
				document.getElementById('i1').appendChild(tag);

  

提交表单:

			document.getElementById('').submit()

  

其他操作:

			console
			alert
			confirm()   弹出确认框,返回一个布尔值,true or false
	
			//url和刷新
			location.href
			location.href="" #重定向,跳转
			location.reload() #页面刷新 
	
			//定时器
			setInterval                 	多次定时器
			clearInterval               	清除多次定时器
			setTimeout(function(){},5000)  	单次定时器,对比setInterval,它只执行一次
			clearTimeout                	清除单次定时器
	
			var obj = setInterval(function(){},5000) 
			clearInterval(obj)    这个清除定时器还可以放置在function内

 

示例:模态对话框

			document.getElementsByClassName('c1')[0].classList.add('hide');  #通过类找到的是列表
			document.getElementById('c1').classList.remove('hide'); 

  

全选和反选示例

函数名取值时记得不要和预设的冲突了

			function reverseall() {
				 var tb = document.getElementById('tb');  	#获取总父标签
				 var tr = tb.children;                		#所有孩子
				 for( var i=0;i<tr.length;i++){
					 var checkbox = tr[i].children[0].children[0];  #第一个孩子
					 if(checkbox.checked){
						 checkbox.checked = false;    #获取打钩框的值
					 }else{
						 checkbox.checked = true;
					 }

				 }
			}

  

示例:左侧管理菜单

			function changeMenu(ths) {
				var item_list = ths.parentElement.parentElement.children;
				for(i=0;i<item_list.length;i++){
					var item = item_list[i];
					item.children[1].classList.add('hide')     #所有添加hide
				}
				ths.nextElementSibling.classList.remove('hide')  #当前菜单remove hide
			}

  

三、事件:
onclick,onblur,onfocus
行为、样式、结构 相分离的页面(js、css、html分开):
把css写到style标签内,onclick放在script标签内,通过tag.onclick = function(){}匿名函数触发

总结:两种方式
直接标签内onclick
获取dom对象然后进行绑定
this:

				直接标签内绑定函数时:script内的this代指全局变量,除非在标签内传this,
				
					<input type="button" onclick="Click(this)" />
					
					function Click(ths){        
						//ths
					}
				获取DOM对象时:代指当前触发事件的标签,是一个DOM对象
				
					<input type="button" id="i1"/>
					
					document.getElementById('i1').onclick=function(){
						//this 
					}

  

例子:

				var myTrs = document.getElementByTagName();
				var len = myTrs.length;
				for(var i=0;i<len;i++){
					myTrs[i].onmouseover = function(){
			***			myTrs[i].style.color = '';         #报错,js作用域的问题,function一开始不执行
															等到鼠标点击的时候i=2已创建好,改this
					}				
				}

  

绑定事件的另一种方式:

			.addEventListener('click',function(){console.log('main')},false);
			.addEventListener('click',function(){console.log('content')},false);

  

false表示冒泡,从里向外,true表示捕捉,从外向里

决定了console的执行顺序,false先content后main
词法分析:
active object AO
1.形式参数
2.局部变量
3.函数声明表达式

分析时,AO的优先性:函数表达式>形式参数>局部变量
执行时,从上到下逐句赋值执行

				function t(age) {
					console.log(age);
					var age=27;
					console.log(age);
					function age() {}
					console.log(age);
				}
				t(3)

 

输出:f age(){} 27 27

posted @ 2018-07-28 15:38  心平万物顺  阅读(137)  评论(0编辑  收藏  举报