JavaScript-基础篇(二)之DOM&BOM

DOM

DOM查找方法

document.getElementById()
返回对拥有指定ID的第一个对象的引用
返回值:DOM对象
document.getElementsByTagName('tag')
返回对所有tag标签引用的集合
返回值:数组

设置元素样式

ele.style.styleName=styleValue
设置ele元素的CSS样式
ele.innerHTML
返回ele元素开始和结束标签之间的HTML
ele.innerHTML="html"
设置ele元素开始和结束标签之间的HTML内容为html

获取属性

ele.getAttribute('attribute')
获取ele元素的attribute属性
获取标签属性语法: DOM对象.属性 如p.id
自定义属性必须通过getAttribute()得到

设置属性

ele.setAttribute('attribute',value)
在ele元素上设置属性

删除属性

ele.removeAttribute('attribute')

HTML事件

关于this的指向
在事件触发的函数中,this是对该DOM对象的引用

DOM0级事件

ele.事件 = 执行脚本
在DOM对象上绑定事件
执行脚本可以是一个匿名函数,也可以是一个函数的调用

鼠标事件

onload 页面加载时触发

window.onload = function(){
    //代码
}

onclick 鼠标点击时触发
onmouseover 鼠标滑过时触发
onmouseout 鼠标离开时触发
onfoucs 获得焦点时触发
onblur 失去焦点时触发
onchange 域的内容改变时触发
onsubmit : 表单中的确认按钮被点击时发生
onmousedown : 鼠标按钮在元素上按下时发生
onmousemove : 在鼠标指针移动时发生
onmouseup : 在元素上松开鼠标按钮时触发
onresize : 当调整浏览器窗口的大小时触发

window.onresize = function(){
    console.log('我的尺寸被改变了');
}

onscroll : 拖动滚动条滚动时触发

键盘事件

onkeydown : 在用户按下一个键盘按键时发生
onkeypress : 在键盘按键被按下并释放一个键时发生
onkeyup : 在键盘按键被松开时发生
keyCode : 返回onkeypress,onkeydown或onkeyup事件触发的键的值的字符代码,或键的代码

document.onkeydown = function(event){
    //event代表事件的状态,如触发event对象的元素,鼠标的位置及状态等
    console.log(event.keyCode);
}
<body>
<div>
    <p>你还可以输入<span><em id="count">30</em>30</span></p>
    <div class="input">
        <textarea name="" id="text" cols="70" rows="5"></textarea>
    </div>
</div>
<script>
    var text = document.getElementById('text');
    var total = 30;
    var count = document.getElementById('count');
    document.onkeyup = function(){
        var len = text.value.length;
        console.log(len)
        var allow = total - len;
        count.innerHTML = allow;
    }
</script>
</body>

BOM

window

window是浏览器的一个实例,在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象.

window.username = 'greentea';   //var username = 'greentea'
window对象的方法

window.alert('content')
显示带有一段消息和一个确认按钮的警告框
window.confirm('message')
显示一个带有指定消息和OK及取消按钮的对话框
返回值:如果用户点击确定,则confirm()返回true,否则返回false
window.prompt('text,defaultText')
参数:
text:要在对话框中显示的纯文本
defaultText:默认的输入文本
返回值:如果用户单击提示框的取消按钮,则返回null,如果单击确定,则返回输入字段当前显示的文本

var message = window.prompt('请输入您的星座',"天蝎座");

window.open(pageURL,name,parameters)
打开一个新的浏览器窗口或查找一个已命名的窗口
参数:
pageURL:子窗口路径
name:子窗口句柄(name声明了新窗口的名称,方便后期通过name对子窗口进行引用)
parameters:窗口参数(各参数用逗号分隔)
window.close

定时器

超时调用

setTimeout(code,millisec)
在指定的毫秒数后调用函数或计算表达式
参数:
1.code:要调用的函数或要执行的JavaScript代码串
2.millisec:在执行代码前需等待的毫秒数
说明:
setTimeout()只执行code一次,如果要多次调用,可以让code自身在此调用setTimeout()

清除超时调用

clearTimeout(id)
取消setTimeout()
参数:
id:由setTimeout()返回的ID值,该值标识要取消的延迟执行代码块

//window.setTimeout('alert("hello")',2000);
var timeout1 = setTimeout(function(){
    alert('hello');
},2000)
clearTimeout(timeout1);
间歇调用

setInterval(code,millisec)
每隔指定的时间执行一次代码
参数:
1.code:要调用的函数或要执行的JavaScript代码串
2.millisec: 周期性 执行或调用code之间的时间间隔,以毫秒计

清除间歇调用

clearInterval(id)
取消setInterval()
参数:
id:由setInterval()返回的ID值,该值标识要取消的延迟执行代码块

var num = 1,
    max = 10,
    tiemer = null;
//每隔1秒钟num递增一次,直到num的值等于max清除
//间歇方法实现
timer = setInterval(function(){
    console.log(num)
    num++;
    if (num > max) {
        clearInterval(timer);
    }
    
},1000)
//超时方法实现
function inCreamentNum(){
    console.log(num);
    num++;
    if (num<=max) {
        setTimeout(inCreamentNum,1000);
    }else{
        clearTimeout(timer);
    }
}
timer = setTimeout(inCreamentNum,1000)

location

location对象提供了与当前窗口中加载的文档有关的信息,还提供了一些导航的功能,它既是window对象的属性,也是document对象的属性

location对象的属性

location.href
返回当前加载页面的完整URL
location.hash
放回URL中的hash(#号后 跟0或多个字符),如果不包含则返回空字符串

<body>
    <div class="box1" id="top"></div>
    <div class="box2"></div>
    <input type="button" value="back" id="btn">
<script>
    var btn = document.getElementById('btn');
    btn.onclick = function(){
        location.hash = "#top";
    }
</script>   
</body>

location.host
返回服务器名称和端口号(如果有)
location.hostname
返回不带端口号的服务器名称
location.pathname
返回URL中的目录和(或)文件名
location.port
返回URL中指定的端口号,如果没有,返回空字符串
location.protocol
返回页面使用的协议
location.search
返回URL的查询字符串,这个字符串以问号开头

location对象的方法
位置操作

改变浏览器位置的方法: location.href
location对象其他属性也可以改变URL: location.hash location.search

location.replace()
location.replace(url)
重新定向URL
使用location.replace不会在历史记录中生成新记录

setTimeout(function(){
    //三种方法皆可
    // location.href = 'http://www.baidu.com';
    // window.location = 'http://www.baidu.com';
    location.replace('http://www.baidu.com');
},2000)

location.reload()
重新加载当前显示的页面
说明:location.reload() 有可能从缓存中加载
location.reload(true) 从服务器重新加载

history

history对象保存了用户在浏览器中访问页面的历史记录

history.back()
回到历史记录的上一步
相当于使用了history.go(-1)
history.forward()
回到历史记录的下一步
相当于使用了history.go(1)

screen

screen对象属性

screen.availWidth
返回可用的屏幕宽度
screen.availHeight
返回可用的屏幕高度
补充
window.innerWidth
window.innerHeight
获取窗口文档显示区的高度和宽度

Navigator

userAgent
用来识别浏览器名称,版本,引擎以及操作系统等信息的内容

var explorer = navigator.userAgent;
console.log(explorer);
//Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • js是前端工程师的核心,只有掌握了它才算进入真真的编程,代码虐我千百遍,我视代码如初恋。。。。 什么是javasc...
    jia林阅读 599评论 2 2
  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,752评论 0 8
  • 第1章 系好安全带,准备启航 1.1让你认识JS 1.1.1 JavaScript能做什么?增强页面动态效果(...
    张中华阅读 1,347评论 4 10
  • ECMAScript 是 JavaScript 的核心,但如果要在 Web 中使用 JavaScript,那么 B...
    劼哥stone阅读 806评论 2 5
  • 所谓习惯写作,就是持续不断地写,永远不要放弃,它终究会教会你写作
    文津阁阅读 206评论 0 1