黑马程序员技术交流社区
标题:
day10JavaScript高级
[打印本页]
作者:
森111
时间:
2018-12-17 16:04
标题:
day10JavaScript高级
一、BOM
二、DOM
1.DOM简单学习
-功能:控制HTML文档的内容
-代码:获取页面的标签(元素)对象
document.getElementById("id值"):通过元素的Id获取元素对象
-操作Element对象:
*设置属性值:
**明确获取的对象是哪一个
**查看API文档,找其中有哪些属性
document.getElementById().属性 = 值;
*修改标签体内容:
**属性:innerHTML
*操作css样式
**document.getElementById().style.属性 = 值;
2.事件简单学习
*功能:某些组件被执行了某些操作后去触发某些代码的执行
*如何绑定事件:
**直接在html标签上,指定事件(属性),事件的值就是js代码
**通过js获取元素对象,指定事件的属性,设置一个函数
*事件
onclick --> 单击事件
3.BOM****
1)概念:Browser Object Model 浏览器对象模型
将浏览器的各个组成部分封装成对象
2)浏览器对象概述******面试题
-Window 窗口对象
-History 历史记录对象
-Location 地址栏对象
-Navigator 浏览器对象
-Screen 屏幕对象
2)浏览器的对象
-Window(浏览器窗口对象)***
*创建:不需要创建
*方法:
**弹出框相关方法
alert() 警告框
confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框,返回布尔值
例: var flag = confirm("您确定要退出吗")
if(flag){alert("欢迎再次光临")}
else{alert("手别抖!")}
prompt() 显示可提示用户输入的对话框,返回用户输入的值
**打开/关闭方法
open("url") 打开一个新的浏览器窗口
close() 关闭浏览器窗口 谁调用close()谁会被关闭
**定时器有关的方法
setTimeout() 在指定的毫秒后调用函数或计算表达式
参数:JS代码或函数对象,时间
例:setTimeout("alert('boom~~~')",2000);
clearTimeout() 取消由setTimeout()方法设置的timeout;
参数:clearTimeout(setTimeout对象)
setInterval() 按照指定的周期来调用函数或计算表达式
参数:JS代码或函数对象,时间
clearInterval() 取消由setInterval方法设置的Interval
参数clearInterval(setInterval对象)
*属性
**获取其他BOM对象
history
location
Navigator
Screen
*特点:
Window对象不需要创建可以直接使用 window(小写)使用 window.方法名();
window可以省略 直接调用方法
-Location(地址栏对象)**
*创建
window.location或location
*方法
reload() 重新加载当前文档.
*属性
href 设置或返回完整的URL
-History(历史记录对象)*
*创建
window.history 或hidtory
*方法
back() 加载history列表中的前一个URL
forward() 加载history列表中的下一个URL
go() 加载history列表中的某一个具体的页面
**参数:如果是正数则前进N个,负数则后退N个
*属性
length: 返回当前窗口历史列表中的URL数量
-Screen(显示器屏幕对象)
-Navigator(浏览器对象)
4.DOM(DOM其实是BOM的一个特殊对象)
1)概念:Document Object Model
将标记语言文档(html文档)的各个组成部分,封装为对象,可以使用这些对象对标记语言文档进行CRUD
2)W3C DOM标准被分为3个不同的部分
-核心 DOM:针对任何结构化文档的标准模型
-HTML DOM:针对HTML文档的标准模型
-XML DOM:针对XML文档的标准模型
3)核心DOM模型
-对象*****记住!!
Document:文档对象 √ -->整个HTML文档对象
Element:元素对象 √ -->标签
Attribute:属性对象 -->标签的属性
Text:文本对象 -->标签的内容
Comment:注释对象 -->注释
Node:节点对象,其他5个的父对象 √ -->所有DOM对象的父类,相当于Object
-Document:文档对象
*创建(获取):在html dom模型中可以使用window来获取
**window.document / document
*方法
**获取Element对象
getElementById():根据id属性值获取元素对象
getElementsByTagName():通过标签名称获取元素对象们,返回值为数组
getElementsByClassName():通过Class名称来获取元素对象们,返回值为数组
getElementsByName():通过Name来获取元素对象们,返回值为数组
一般用在表单标签
**创建其他DOM对象
createElement("标签名")***
createTextNode("文本")***
createAttribute()
createComment()
*属性:
-Element:元素对象
*创建(获取):通过Document.getXXX来获取
*方法:
removeAttribute("属性名")
setAttribute("属性名","属性值")
*属性:
innerHTML:用于替换标签体内的内容
-Node:节点对象
节点可以是元素节点,属性节点,文本节点.
*特点:所有DOM对象都可以被认为是一个节点
*方法:
[CRUD dom树]
//添加或删除必须由父节点才能操作
appendChild(标签对象/文本节点对象):向节点的子节点列表的结尾添加新的子节点
removeChild(标签对象):删除(并返回)当前节点的指定子节点
replaceChild():用新节点替换一个子节点
*属性:
parentNode():获取父节点;
注:如果在<a>标签中的href设置为 href="javascript:void(0)",则不会跳转,可以当做按钮使用.
-补充******可参见视频
*在JS中如何输出日志:
对象:console;
方法:log方法
console.log("日志信息")
打开开发者模式,在console选项卡中获得日志的内容
*在JS中如何debug
在觉得出问题的地方加入:debugger;
自动会呼出开发者模式
4)HTML DOM对象模型
-标签体的获取:innerHTML
*innerHTML可以简单地添加标签体
-使用html元素对象的属性
-控制元素样式
*属性.style.样式属性 = "样式属性值"
如:div1.style.border = "1px solid red";
*先用css写一个类选择器
通过元素的className属性来设置class属性值
如:div.classNme="d1";
5)事件:
*页面加载完成后触发的事件
window.onload = function{}
页面加载完以后才执行的逻辑
*点击事件
onclick:单击事件
dblclick:双击事件
*获得焦点事件:光标在文本框中
onfocus
*失去焦点事件:失去光标
onblur
*表单事件
onsubmit:提交事件
!!!注意:事件属于form而不是表单项
需要在函数中return false/true来控制是否提交
行内式:最终结果需提交给form:如-return check()
例:<form>
<input type="text" name="username">
<input type="submit">
</form>
<script>
function check{
var str = document.getElementsByName("username")[0].value;
if(str=="")
{
alert("用户名不能为空")
retrun false;
}else{
return true;
}
}
</script>
5)事件监听机制
-概念:某些组件被执行了某些操作后,触发某些代码的执行
事件:如单击,双击,键盘按下了,鼠标移动了
事件源:组件.如:按钮 文本输入框
监听器:代码
注册监听:将事件,事件源,监听器结合在一起.当事件源上发生时间则执行监听器代码
-点击事件
*onclick:单击事件
*ondblclick:双击事件
-焦点事件
*onfocus:获得焦点
*onblur:失去焦点
一般用于表单校验
-加载事件
*onload:初始化后再执行事件
-鼠标事件
*onmousedown:鼠标按下
*onmouseup:鼠标松开
*onmouseover:鼠标移动到元素之上
*onmouseout:鼠标移开
*onmousemove:鼠标移动
-键盘事件
*onkeydown:键盘被按下
*onkeyup:键盘松开
*onkeypress 某个按键被按下并松开
-选择和改变事件
*onchange:
*onselect:
-表单事件
*onsubmit:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2