详解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 相关文章推荐
BOM与DOM的区别分析
Oct 26 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
js实现仿微博滚动显示信息的效果
Dec 21 Javascript
jQuery简单实现上下,左右滑动的方法
Jun 01 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
vue中渐进过渡效果实现
Oct 27 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
May 11 Javascript
vue内置指令详解
Apr 03 Javascript
javascript实现5秒倒计时并跳转功能
Jun 20 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
在pycharm中开发vue的方法步骤
Mar 04 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 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中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
php事件驱动化设计详解
2016/11/10 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
四年级下册教学反思
2014/02/01 职场文书
个人贷款收入证明
2014/10/26 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
八月一日观后感
2015/06/10 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android