正课:
修改:内容、属性、样式
1. 修改:
1、内容:
1. .innerHTML: 获取或设置元素开始标签到结束标签之间的html代码片段。 "<<"表单元素的内容:value,因为是单标签
2. .textContent: 获取或设置元素开始标签到结束标签之间的纯文本内容。 ">>"
2件事: 1. 去掉了html标签
2. 将转义字符转换为正文
何时: 如果希望去掉内容中的标签,仅获取文本内容时
.textContent有兼容性问题: IE8不兼容
IE8: .innerText
2. 属性:
html标准属性:
一、核心DOM: 万能 优点:万能 缺点:繁琐
1. 获取属性:
1. 获得属性节点对象: (了解)
var attrNode=elem.attributes[i/属性名];
elem.getAttributeNode("属性名");
attrNode.value
2. 直接获得属性值:
var value=elem.getAttribute("属性名");
2. 设置属性:
elem.setAttribute("属性名",新值);
3. 判断是否包含指定属性:
var bool=elem.hasAttribute("属性名")
4. 移除属性:
elem.removeAttribute("属性名");
二、HTML DOM: 仅对部分的简化 优点:简单 缺点:不万能
获取:elem.属性名 赋值:elem.属性=""
强调: html中的class属性和ES中的class属性冲突
html中的class要改名为className
特例: 状态属性:disabled selected checked
不能用核心DOM操作!只能用HTML DOM打点操作
attribute vs property
attribute指出现在开始标签中的属性 : id、onclick
property保存在内存中的对象中的属性 : console.dir(btn)
核心DOM只能操作出现在页面上的attribute属性
无法操作未出现在页面上的内存中的property属性
HTML DOM可访问内存中的property属性,两者之间是由交集的
开发时,不必区分概念,优先使用简单的API,如果简单的不能实现了,就使用万能的API;
自定义属性: 2种:
1. 只能用核心DOM访问,不能用html访问
2. HTML5: ——兼容问题
所有自定义属性: 属性名必须: data-属性名
访问时: elem.dataset.属性名
何时: 1. 在客户端网页中临时缓存部分业务数据
2. 代替id和class作为查找元素的条件
3. 样式:
内联样式获取和修改:elem.style.css属性名
强调: 所有css属性都要去横线变驼峰
background-color -> backgroundColor
list-style-type -> listStyleType
问题1: 只能获得/设置内联样式,无法获取最终应用到元素上的完整样式
解决:总结:
只要修改样式: elem.style.css属性名
因为: 优先级最高!且仅当前元素可用,不影响其他元素
如果获取一个元素的样式: 不用style
getComputedStyle(elem).css属性名 可以获得计算后的完整样式强调:computed获得的style样式是只读
问题2: elem.style.css属性名一句话只能设置一个样式
如果需要同时设置一个元素的多个css属性,代码繁琐
解决: 今后只要操作一个元素的样式,都用class属性批量操作
特例: 精确控制动画效果时,需要操作单个css属性内部/外部样式表:
补: .innerHTML只能获得封闭标签的内容
表单元素的值只能用.value