详解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时遇到的一些小问题
Dec 06 Javascript
jQuery(非HTML5)可编辑表格实现代码
Dec 11 Javascript
JQuery+DIV自定义滚动条样式的具体实现
Jun 25 Javascript
js获取多个tagname的节点数组
Sep 22 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
jQuery实现带动画效果的二级下拉导航方法
Mar 11 Javascript
简介JavaScript中fixed()方法的使用
Jun 08 Javascript
React Native 使用Fetch发送网络请求的示例代码
Dec 02 Javascript
基于JavaScript中标识符的命名规则介绍
Jan 06 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
Jan 21 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
Nov 01 jQuery
Javascript实现贪吃蛇小游戏(含详细注释)
Oct 23 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
xml+php动态载入与分页
2006/10/09 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
php不使用插件导出excel的简单方法
2014/03/04 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
jQuery 创建Dom元素
2010/05/07 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
Angularjs单选框相关的示例代码
2017/08/17 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
python的文件操作方法汇总
2017/11/10 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
用Python实现职工信息管理系统
2020/12/30 Python
前台文员岗位职责及工作流程
2013/11/19 职场文书
《白鹅》教学反思
2014/04/13 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
使用Apache Camel表达REST服务的方法
2022/06/10 Servers