day18 dom2 dom3(增删改查,JSON渲染页面)

92 阅读3分钟

今天上午目标:操作元素 强调页面上一切数据都是字符串类型 <标签名 属性名="属性值" style="样式">内容</标签名>

1、元素的内容: *1、elem.innerHTML:获取或设置开始标签到结束标签之间的HTML代码,没有兼容性问题,可以识别标签 获取:elem.innerHTML; 设置:elem.innerHTML="新内容";

 2、elem.textContent:获取或设置开始标签到结束标签之间的纯文本,有兼容性问题,不可以识别标签
	获取:elem.textContent;
	设置:elem.textContent="新文本";
	老IE:elem.innerText;//第一次碰到小三上位,原本是只有老IE才可以使用的,但是随着各个浏览器的发展,都可以使用此属性

*3、input.value:获取或设置input的值
	获取:input.value;
	设置:input.value="新值";

2、元素的属性: 1、*获取属性值: 核心DOM:elem.getAttribute("属性名");

	HTML DOMelem.属性名;

2、*设置属性值:
	核心DOMelem.setAttribute("属性名","属性值");

	HTML DOMelem.属性名="属性值";

3、删除属性值:
	*核心DOMelem.removeAttribute("属性名");

	HTML DOMelem.属性名="";

4、判断有没有:垃圾,只能判断有没有,不能判断具体是什么
	核心DOMelem.hasAttribute("属性名");

	HTML DOMelem.属性名!="";

强调:
	HTML DOM虽然轻松方便,但是有两个小缺陷:
		1、只能访问/操作标准属性,不能操作自定义属性
		2ES6诞生后,class变成了一个关键字,class必须写为className
		3、删除的时候,HTML DOM设置为空,删不干净属性节点还在,只是值为空了,但是有的属性删不干净,
		      它依然具有功能,比如:hrefdisabled,更推荐核心DOM才可能删干净
		4、一切的获取都是为了判断,一切的设置都是在修改

3、元素的样式: 1、内联样式:优先级最高,一定会覆盖其他样式 仅仅当前元素可用,不会牵一发动全身 获取样式:elem.style.css属性名; 设置样式:elem.style.css属性名="css属性值";

	唯一的小缺点:获取样式时,只能获取内联样式

2、样式表:
		//1、获取你想要操作的样式表
		var sheet=document.styleSheets[i];
		//2、获取到所有的样式规则
		var rules=sheet.cssRules;
		//3、数出你要操作的那个样式规则
		var rule=rules[i];
		//4、获取或设置
		console.log(rule.style.background);
		rule.style.background="purple";

作业: 1、*使用value来实现placeholder的功能 2、*2_1.html 2_2.html *3_1.html 4_1.html(不准使用let,不准使用自定义下标)

1、创建元素:3步 1、先创建空标签: var elem=document.createElement("标签名");

2、为其设置必要的属性和事件
	elem.属性名=属性值;
	elem.on事件名=function(){}

3、渲染页面 - 上树:3种
               *父元素.appendChild(elem) - 将elem追加到父元素里面当儿子,最后一个儿子
	父元素.insertBefore(elem,已有子元素) - 将elem追加到父元素里面当儿子,插入在已有子元素的前面
	父元素.replaceChild(elem,已有子元素) - 将elem追加到父元素里面当儿子,替换掉已有子元素

2、删除元素:elem.remove();

恭喜你,你的核心DOM全部学习完毕了:增、删、改、查 - 元素、内容、属性、样式。

HTML DOM简化了核心DOM

4、HTML DOM常用对象: 1、image对象:图片对象,仅仅只是简化了创建 var img=new Image(); 强调:构造函数方式,不是任何一个元素都可以使用

2、form对象:表单对象,仅仅只是简化了查找,还带了一个专属事件
	查找form元素:var form=document.forms[i];
	查找input元素:var input=form.elements[i];
	专属事件:提交事件:form.onsubmit=function(){}

3、*select对象:带来了2个属性,2个方法,1个事件
	属性:select.options - 获取到select下面所有的option === children
	          select.selectedIndex - 获取选中项的下标,只要是做【联动必备】

	方法:select.add(option) === appendChild;
	          select.remove(i) - 删除i下标的option元素

	专属事件:select.onchange=function(){} - 选中项发生改变就会触发事件

4、*option对象:仅仅只是简化了创建,但是非常屌,一句话可以完成4个操作
	select.add(new Option("innerHTML","value"));

作业: 1、上午5道题 2、下午3道题:*1_2.html 3.html new2_1.html