详解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 写类方式之七
Jul 05 Javascript
jQuery Ajax之load()方法
Oct 12 Javascript
让网页跳转到指定位置的jquery代码非书签
Sep 06 Javascript
javascript调试过程中找不到哪里出错的可能原因
Dec 16 Javascript
JavaScript针对网页节点的增删改查用法实例
Feb 02 Javascript
javascript实现根据时间段显示问候语的方法
Jun 18 Javascript
jquery-tips悬浮提示插件分享
Jul 31 Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
Jan 25 Javascript
浅析java线程中断的办法
Jul 29 Javascript
vue.js实现简单的计算器功能
Feb 22 Javascript
JS XMLHttpRequest原理与使用方法深入详解
Apr 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 中使用随机数的三个步骤
2006/10/09 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
JavaScript 使用技巧精萃(.net html
2009/04/25 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
python机器学习之贝叶斯分类
2018/03/26 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
替换python字典中的key值方法
2018/07/06 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
怎么写好自荐信
2013/10/30 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
化学系大学生自荐信范文
2014/03/01 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python
浅谈python中的多态
2021/06/15 Python
Python读写yaml文件
2022/03/20 Python