详解js的事件处理函数和动态创建html标记方法


Posted in Javascript onDecember 16, 2016

1 HTML的事件属性

全局事件属性:HTML 4 增加了使事件在浏览器中触发动作的能力,比如当用户点击元素时启动 JavaScript。

  a. Window 事件属性,针对 window 对象触发的事件(应用到 <body> 标签),常用的为onload。

  b. Form事件,由 HTML 表单内的动作触发的事件(应用到几乎所有 HTML 元素,但最常用在 form 元素中):常用的为onblur、onfocus、onselect、onsubmit。

  c. keybord事件

  d.Mouse事件,由鼠标或类似用户动作触发的事件:常用的为onclick、onmouseover、onmouseout。

  e. Media事件,由媒介(比如视频、图像和音频)触发的事件(适用于所有 HTML 元素,但常见于媒介元素中,比如 <audio>、<embed>、<img>、<object> 以及     <video>)。

2  事件处理函数

文档的结构与文档的行为混杂在一起,例如:

<a href="images/example.jpg" onclick="showPic(this);return false;">

文档的结构与文档的行为分开,例如:

element.onclick = function() { showPic(whichpic); return false; }

3 共享onload事件

页面加载之后立即执行一段 JavaScript:<element onload="script">,如果想让页面加载后执行多个脚本呢?办法是:

window.onload = function() {
 script1;
 script2;
 script3;
 ......
 }

但是这个办法没有弹性,如果需要加载的脚本不断变化,那么代码也要跟着变化,更好的办法是:

function addLoadEvent(func)() {
 var oldonload = window.onload;
 if (typeof window.onload !="function") {
  window.onload = func;
 } else {
  window.onload = function() {
   oldonload();
   func;
  }
 }
 }

4 动态创建html标记

  a. 两个传统的方法

    document.write方法和innerHTML属性,两者都不是标准化的DOM(W3C标准)所支持的方法和属性,它们都是html的专有属性。

    document.write方法可以很方便的插入元素标签,尤其是字符串。但是它与网页设计应将行为(脚本)和结构(html标签)分离的原则相背。

<!DOCTYPE html>
 <html>
 <head>
 <meta chaset="utf-8" />
 <title>document.write</title>
 <body>
  <script>
  <!--可以很方便的插入元素标签,尤其是字符串.但是它与网页设计应将行为(脚本)和结构(html标签)分离的原则-->
  document.write("<p>This is inserted by document.write</p>");
  </script>
 </body>
 </head>
 </html>

innerHTML适合将一大段HTML内容插入网页,如:

<div id="testdiv">
 </div>
 window.onload = function() {
 var testdiv = document.getElementById("testdiv");
 testdiv.innerHTML = "<p>This is inserted by <em>innerHTML</em></p><en>";
 }

  b. 更加精细化的dom方法-获取dom节点树和改变dom节点树

    检索节点(元素):document.getElementById和element.getElementsByTagName
   
    创建节点(元素):document.createElement,document.createTextNode
   
    追加节点(元素):element.appendChild

    插入(将一个节点插入到另一个节点之前):parentEelement.insertBefore(newElement, targetElement)

    很有用的属性:element.parentNode(获取父节点)、element.nextSibling(获取兄弟节点)

    上面用innerHTML属性插入HTML的效果用dom方法照样可以实现:

window.onload = function() {
  var testdiv = document.getElementById("testdiv");
  var para = document.createElement("p");
  testdiv.appendChild(para);
  var context1 = doument.createTextNode("This is inserted by ");
  para.appendChild(context1);
  var emphasis = document.createElement("em");
  para.appendChild(emphasis);
  var context2 = document.createTextNode("method of domcore");
  emphasis.appendChild(context2);
 }

利用上面的dom方法写一个将一个节点插入到另一个节点之后的函数:

function insertAfter(newElement, targetElement) {
 var parent = targetElement.parentNode;
 if (parent.lastChild == targetElement) {
  parent.appendChild(newElement);
 } else {
  targetElement.inserBefore(newElement, targetElement.nextSibling);
 }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
javascript 数组排序函数
Aug 20 Javascript
javascript学习笔记(一) 在html中使用javascript
Jun 18 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
Jun 09 Javascript
jQuery中校验时间格式的正则表达式小结
Sep 22 Javascript
JavaSript中变量的作用域闭包的深入理解
May 12 Javascript
javascript实现信息增删改查的方法
Jul 25 Javascript
Google 地图API资料整理及详细介绍
Aug 06 Javascript
JavaScript每天必学之事件
Sep 18 Javascript
BootStrap表单验证实例代码
Jan 13 Javascript
简化版的vue-router实现思路详解
Oct 19 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
Nov 21 Javascript
微信小程序利用云函数获取手机号码
Dec 17 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
Dec 16 #Javascript
JS限制条件补全问题实例分析
Dec 16 #Javascript
Node.js用readline模块实现输入输出
Dec 16 #Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
Dec 16 #Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 #Javascript
概述jQuery中的ajax方法
Dec 16 #Javascript
JS数组排序方法实例分析
Dec 16 #Javascript
You might like
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
分析python服务器拒绝服务攻击代码
2014/01/16 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
优秀毕业大学生推荐信
2013/11/13 职场文书
个人素质的自我评价分享
2013/12/16 职场文书
低碳环保演讲稿
2014/08/28 职场文书
乐山大佛导游词
2015/02/02 职场文书
2014年个人年终总结
2015/03/09 职场文书
python OpenCV学习笔记
2021/03/31 Python