js事件
2021-01-04 12:29
标签:事件模型 confirm doc number 定义 体验 oca www variable 事件 (Event) 是 JavaScript 应?跳动的?脏 ,进?交互,使??动起来。当我们与浏览器中 Web ??进?某些类型的交互时,事件就发?了。 事件源: 谁触发的事件 事件名: 触发了什么事件 事件监听: 谁管这个事情,谁监视? 事件处理:发?了怎么办 作用: (1)验证?户输?的数据。 (2)增加??的动感效果。 (3)增强?户的体验度 JavaScript可以处理的事件类型为:?标事件、键盘事件、HTML事件。 常用的几个事件: 我们的事件最后都有?个特定的事件源,暂且将事件源看做是HTML的某个元素,那么当?个HTML元 素产??个事件时,该事件会在元素节点与根节点之间按特定的顺序传播,路径所经过的节点都会受到 该事件,这个传播过程称为DOM事件流。 事件顺序有两种类型:事件捕获 和 事件冒泡。 IE 的事件流叫做事件冒泡,即事件开始时由最具体的元素接受,然后逐级向上传播到较为不具体的节 点(?档)。 事件捕获的思想是不太具体的节点应该更早接收到事 件,?最具体的节点应该最后接收到事件。事件捕获的?意在于在事件到达预定?标之前捕获它。 BOM的核?对象是window,它表示浏览器的?个实例。window对象有双重??,它既是通过 JavaScript访问浏览器窗?的?个接?,?是ECMAScript规定的Global对象。这意味着在??中定义的任 何?个对象、变量和函数,都以window作为其Global对象,因此有权访问parseInt()等?法。如果??中 包含框架,则每个框架都拥有??的window对象,并且保存frames集合中。在frames集合中,可以通 过数值索引(从0开始,从左?右,从上到下)或者框架的名称来访问相应的window对象。 浏览器通过(实际是window对象的?法)alert()、confirm()、prompt()?法可以调?系统对话框向?户显示消息。 (1)消息框:alert, 常?。 alert() ?法?于显示带有?条指定消息和?个 OK 按钮的警告框。 (2)输?框:prompt,返回提示框中的值。 prompt() ?法?于显示可提示?户进?输?的对话框。 参数(可选): 第?个参数:要在对话框中显示的纯?本。 第?个参数:默认的输??本。 (3)确认框:confirm,返回 true/false. confirm() ?法?于显示?个带有指定消息和 OK 及取消按钮的对话框。 window.open()?法既可以导航到?个特定的URL也可以?来打开?个新的窗? window.close():关闭窗?。 setTimeout() : 在指定的毫秒数后调?函数或计算表达式。返回?个唯?的标识;也可以通过返回的 clearTimeout(id): 来清除指定函数的执?。 setInterval():可按照指定的周期(以毫秒计)来调?函数或计算表达式,也可根据返回的标识?来结束。该?法会不停地调?函数,直到 clearInterval() 被调?或窗?被关闭。 history 对象是历史对象。包含?户(在浏览器窗?中)访问过的 URL。history 对象是 window 对象的 ?部分,可通过 window.history 属性对其进?访问。 history对象的属性:length,返回浏览器历史列表中的 URL 数量。 history对象的?法: location 对象是window对象之?,提供了与当前窗?中加载的?档有关的信息,还提供了?些导航功 能。也可通过 window.location 属性来访问。 location 对象的属性 href:设置或返回完整的 URL location 对象的?法 要实现??的动态交互效果,bom 操作远远不够,需要操作 html 才是核?.如何操作 html,就是 DOM。简单的说,dom 提供了?程序动态控制 html 接?。DOM即?档对象模型描绘了?个层次化的节点树,运?开发?员添加、移除和修改??的某?部分。dom 处于javascript 的核?地位上。 加载 HTML ??时,Web 浏览器?成?个树型结构,?来表示??内部结构。DOM 将这种树型结构理 解为由节点组成,组成?个节点树。对于??中的元素,可以解析成以下?种类型的节点: 1.文档节点 2.元素节点 3.属性节点 4.文本节点 5.注释节点 方法: 案例: 这是?个段落?本 这?是?个段落 创建节点 插入节点 添加 “段落、图?、?本框、选项” 以后的你会感谢现在努?的你JS事件
事件
事件类型
onclick 元素发生鼠标点击时触发
onblur 元素失去焦点时运行的脚本
onfocus 元素获得焦点时运行的脚本
onload 页面加载之后触发
onchange 在元素值被改变时运行的脚本
onmouseover 当鼠标指针移动到元素上时触发
onmouseout 当鼠标指针移出元素时触发
onkeyup 当用户释放按键时触发
onkeydown 在用户按下按键时触发
事件流和事件模型
BOM对象
style type="text/css">
?
#aa{
?
border: 1px solid red;
?
height: 100px;
?
}
?
style>
body>
?
div id="aa">
?
This is a div
?
div>
?
button onclick="testAlert();">警告button>
?
button onclick="testComfirm();">修改button>
?
button onclick="testPrompt();">输?button>
?
script type="text/javascript">
?
// 1.警告框
?
function testAlert(){
?
alert(‘警告框!!!‘);
?
}
?
?
/*
?
2.输?框
?
返回值:输?的内容
?
- */
?
function testPrompt(){
?
var item = prompt(‘请输?年龄‘); // item得到输?的值
?
// console.log(item)
?
// alert(prompt(‘请输?年龄‘,18)); // 将输?的值输出
?
}
?
?
/*
?
3.确认框
?
返回值:boolean(true|false)
?
- */
?
function testComfirm(){
?
var result = confirm(‘真的要改吗?‘);
?
if(result){
?
var ele = document.getElementById("aa");
?
ele.style.color="red";
?
ele.innerHTML="fdsfsd";
?
}else{
?
alert("没事别瞎点。。。");
?
}
?
}
?
script>
?
body>
打开窗?
script type="text/javascript">
?
function openBaidu(){
?
window.open(‘http://www.baidu.com‘,‘_self‘); // _self、_blank等
?
// window.open(); //空?窗?
?
}
script>
input type="button" name="open" value="百度" onclick=‘openBaidu();‘ />
关闭窗?
input type="button" value="关闭窗?" onclick="window.close();" />
时间函数
var id = setTimeout(function,times);
?
clearTimeout(id)
script type="text/javascript">
// 延迟3 秒后出现 alert
?
function hello() {
?
alert("对不起, 要你久候");
?
}
?
setTimeout("hello()", 3000);
?
// 时间显示器
?
var timeout;
?
function init(){
?
// 拿到当前时间
?
var date = new Date();
?
var time = date.toLocaleString();
?
// 拿到相应对象
?
var h1 = document.getElementById(‘h1‘);
?
// 根据需求添加样式
?
if(0==date.getSeconds()){ // 当时间的秒数变成0时,显示红?字体
?
h1.innerHTML = ‘‘ + time + ‘‘;
?
} else {
?
h1.innerHTML = time;
?
}
?
/*
?
- 定时操作,只执??次
?
第?个参数:执?的?法;第?个参数:定时,单位是毫秒
?
\* */
?
setTimeout(init,1000); // 等多少时间来执?
?
}
?
// window.setTimeout(init,1000);// 只执??次
?
// 停?操作
?
function stopShow () {
?
clearTimeout(timeout);
?
}
?
script>
?
body onload="init();">
?
h1 id="h1">h1>
?
button onclick="stopShow()">时间停?button>
?
body>
//**在times毫秒后执?function指定的?法,执?之前也可以取消**
setInteval()
var id = setInterval(function,times);
clearInterval(id);
function test(){
?
console.log(".....");
?
}
?
// window是?个全局对象,通过全局对象调?setInterval()函数
?
window.setInterval(test,1000);
history对象
back():加载 history 列表中的前?个 URL。
forward():加载历史列表中的下?个 URL。当??第?次访问时,还没有下?个url。
go(number|URL): URL 参数使?的是要访问的 URL。? number 参数使?的是要访问的 URL 在 History
的 URL 列表中的相对位置。go(-1),到上?个??
location对象
reload():重新加载当前?档。
replace():?新的?档替换当前?档。
DOM对象
节点
操作元素节点
1.获取节点
getElementById()
getElementsByTagName()
getElementsByClassName()
getElementsByName()
?
?
按照id获取
?
按照name获取
?
按照标签名获取
?
按照class获取
?
12345678910111213141516171819202122232425
2.创建节点和插?节点
createElement() 创建?个新的节点,需要传?节点的标签名称,返回创建的元素对象
createTextNode() 创建?个?本节点,可以传??本内容
innerHTML 也能达到创建节点的效果,直接添加到指定位置了
write() 将任意的字符串插?到?档中
appendChild() 向元素中添加新的?节点,作为最后?个?节点
insertBefore() 向指定的已有的节点之前插?新的节点newItem:要插?的节点exsitingItem:参 考节点 需要参考?节点
button onclick="add()">添加段落button>
?
div id="container">div>
?
script type="text/javascript">
?
function add(){
?
var container = document.getElementById(‘container‘)
?
var paragraph = document.createElement(‘p‘);
?
var txt = document.createTextNode(‘hello‘)
?
paragraph.appendChild(txt)
?
container.appendChild(paragraph)
?
}
?
script>
body>
?
button onclick="addPara();">添加段落button>
?
button onclick="addImg();">添加图?button>
?
button onclick="addTxt();">添加?本框button>
?
button onclick="addOptions()">添加选项button>
?
select name="music">
?
option value="-1">你?内的??歌option>
?
option value="0">南?南option>
?
option value="1">喜欢你option>
?
select>
?
hr />
?
div id = "container">div>
?
body>
script type="text/javascript">
// 添加p节点
?
function addPara(){
?
// 获取容器
?
var container =document.getElementById("container");
?
// 创建段落
?
var p =document.createElement(‘p‘);
?
// 第?种?式
?
// 创建?本节点
?
var txt=document.createTextNode("以后的你会感谢现在努?的你");
?
// 将txt节点追加到p节点中
?
p.appendChild(txt);
?
// 将p节点追加到container节点中
?
container.appendChild(p);
?
/*
?
// 第?种?式
?
// 向p节点中添加内容
?
p.innerHTML = "以后的你会感谢现在努?的你";
?
// 将p节点追加到container节点中
?
container.appendChild(p);
?
*/
?
/*
?
// 第三种?式
?
// 将字符串类型的p标签内容添加到container中,不会添加多次
?
var str = "