详解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 尚未实现错误解决办法
Nov 27 Javascript
js检验密码强度(低中高)附图
Jun 05 Javascript
详解JavaScript的while循环的使用
Jun 03 Javascript
全面解析Bootstrap手风琴效果
Apr 17 Javascript
JS实现图片平面旋转的方法
Mar 01 Javascript
BootStrap daterangepicker 双日历控件
Jun 02 Javascript
原生js jquery ajax请求以及jsonp的调用方法
Aug 04 jQuery
js实现多个倒计时并行 js拼团倒计时
Feb 25 Javascript
Vue源码分析之Vue实例初始化详解
Aug 25 Javascript
javascript设计模式之装饰者模式
Jan 30 Javascript
antd Select下拉菜单动态添加option里的内容操作
Nov 02 Javascript
js前端面试常见浏览器缓存强缓存及协商缓存实例
Jun 21 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
php解析url的三个示例
2014/01/20 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
python pytest进阶之xunit fixture详解
2019/06/27 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
公司市场部岗位职责
2013/12/02 职场文书
公积金单位接收函
2014/01/11 职场文书
《乡愁》教学反思
2014/02/18 职场文书
高中生班主任评语
2014/04/25 职场文书
成本会计岗位职责
2015/02/03 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书