之前的只是 js 语法基础罢了。要想实现在浏览器中实现交互功能主要是通过 Web APIs 的交互功能。比如之前接触过的alert()
, prompt()
直接在浏览器中输入输出这两个方法都属于 Web APIs.
document object model 文本对象模型,是W3C推荐的可扩展的标记语言(HTML XML)的标准编程接口。通过这些借口可以改变网页的内容、结构、样式。
文档:一个页面是一个文档。
元素:一个标签是一个元素。
结点:网页中所有内容都是结点(标签、属性、文本、注释)。
以上三者都是对象。
getElementById() 通过 id 获取元素。没有返回 null。
<div id='time'></div>
var timer=document.getElementId('time');//返回元素对象
console.log(timer);//打印标签和内容
console.dir(timer);//打印其详细信息
getElementsByTagName() 根据标签名获取,返回对象集合。可以通过数组下标的形式访问第几个元素。
除了 document.getElementsByTagName() 父元素,也可以 element.getElementsByTagName() 获取该父元素中的子元素。注意父元素不可以是对象数组,必须是具体的某个对象,形如 element[0].
getElementsByClassName() H5新增方法,根据类名获取。
querySelector() H5新增方法,根据选择器获取第一个对应元素对象,括号中写选择器。如.style
说明这是个类选择器,#style
说明这是个id选择器,li
直接写标签是标签选择器.
querySelectorAll() 获取所有对应元素对象。
document.body() document.documentElement() 获取 body 和 html 元素。
分为三部分:事件源,事件类型(点击?获取鼠标焦点?)执行程序。
事件源:获取的元素对象。
事件类型、事件对象:通过函数赋值方式完成。
btn.onclick=function(){
alert('点击按钮弹出警示');
//this会指向事件的调用者,即btn自己。
this.disabled=true;
}
onclick 点击
onmouseover 鼠标经过
onmouseout 鼠标移开
onfocus 获得焦点
onblur 失去焦点
onmousemove 鼠标移动
onmouseup 鼠标弹起
onmousedown 鼠标按下
element.innertext='新文本';
文本也可以是之前的一些js基础内容,比如获取今天日期。
如果不添加事件直接写上式,那么在打开页面时就会自动修改文本。
element.innereHTML='新文本';
innerHTML 可以识别标签,如。
var text=element.innertext;
var text=element.innerHTML;
这两个属性也可以访问值,获取文本内容,innerHTML 还会包含空格、标签等内容。
img.src='新src';img.title='新标题';
value:表单中的值
disabled:是否被禁用
checked, selected:是否被选择
制作密码框,点击眼睛图标后密码可见,再次点击密码隐藏:切换输入框的type=text或password。
btn.style.backgroundColor:#ffffff;
js中样式属性为驼峰命名法;
修改的样式属于行内样式,权重较高。
点击叉号关闭:display: none;
循环精灵图的制作:在for循环中调整每个图标的 backgroundPosition 位置。
如果要改的样式太多,可以直接改类选择器:element.className='新类选择器';
这个优先级比默认的类选择器高,会覆盖原来的样式。
制作带提示信息的密码框,用户输入少于6位或多于16位时显示红色提示信息:首先判断用户焦点离开输入框,然后判断输入框中值的长度,如果不符合规范则样式变为红色,提示信息变为“输入的密码格式不正确”。
例:一共有五个按钮,默认都是白色背景,每次点击一个按钮时,只有那个按钮变色。
for(int i=0;i<5;i++){
btn[i].onclick=function(){
this.style.backgroundColor='red';
}
}
但是上面的解法问题在于点击后的按钮红色会永久保留,而我们每次只希望一个按钮变色。
解法:每次点击时,先把所有按钮背景颜色置为白色(排他),然后再把当前按钮背景置为红色。
轮播图的小圆点就会采用这种方法。不过也不是所有的只变当前元素的示例都需要排他思想。比如鼠标经过按钮变色,离开恢复,就可以只写 onmouseover 变红和 onmouseout 变白。
tabBar制作也会用到排他思想。点击对应的li列表,该列表的样式变为被选中状态,同时该列表中包含的内容也是一样的,变为display:block
状态,其他的隐藏或未选中状态。这里列表对应内容元素可以通过下面的自定义属性实现。
除了元素自带的属性还可以自定义。
元素自身原有的属性通过.属性
就能获取和赋值。
自定义属性通过getAttribute()
获取,setAttribute('属性','值')
赋值,removeAttribute('属性')
删除属性。
为防止自定义属性与元素原有属性产生歧义,H5规定所有自定义属性以data-开头,如 data-index, data-list-name,获取的时候有两种方法,第一种还是getAttribute(), 如element.getAttribute('data-index')
ie11后还支持一种获取自定义属性的方法:采用驼峰命名法,属性名为index, listName,不包含data。
然后使用dataset获取,如element.dataset.listName或element.dataset['listName']
。
这种方法获取的属性只能由data开头,属性名不包括data。