详解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 相关文章推荐
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
Mar 14 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
Mar 17 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
jQuery动画效果实现图片无缝连续滚动
Jan 12 Javascript
JS使用单链表统计英语单词出现次数
Jun 16 Javascript
javascript使用 concat 方法对数组进行合并的方法
Sep 08 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
JS+canvas画一个圆锥实例代码
Dec 13 Javascript
JS实现li标签的删除
Apr 12 Javascript
详解ES6 export default 和 import语句中的解构赋值
May 28 Javascript
JSONP 的原理、理解 与 实例分析
May 16 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数据 dbclass类
2011/05/07 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
js实现select下拉框选择
2020/01/11 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
Python记录详细调用堆栈日志的方法
2015/05/05 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
python3实现基于用户的协同过滤
2018/05/31 Python
python实现画一颗树和一片森林
2018/06/25 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
浅谈Python中的字符串
2020/06/10 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
小学毕业家长寄语
2014/01/19 职场文书
差生评语大全
2014/05/04 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
试用期自我评价范文
2015/03/10 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
宿舍管理制度范本
2015/08/07 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
导游词之河北野三坡
2019/12/11 职场文书