博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScriptDom操作与高级应用(八)
阅读量:4677 次
发布时间:2019-06-09

本文共 8092 字,大约阅读时间需要 26 分钟。

一:Dom操作基础与高级应用

Node接口也定义了一些所有节点类型都包含的属性和方法.

 

二:创建和操作节点

1)创建新节点

createDocumentFragment()

创建文档碎片节点

createElement(tagname)

创建标签名tagname的元素

createTextNode(text)

创建包含文本text的文本节点

appendChild()

添加子元素

实例:

         createElementd()  Example	                

Hellow

how are you?

ok

 鼠标放上和离开的样式:

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> New Document 

 鼠标放上去的提示:

 New Document 
click me

 表格排序:

一、数组排序

例:

var arr = [3,32,5,34];

arr.sort();

alert(arr.toString());  //output “3,32,34,5”

问题:如何实现正确的排序?

一个基本的比较函数:

function comparison_function(value1,value2){

  if (value1<value2)

     return -1

  else if (value1>value2)

     return 1

  else

    return 0

}

//说明:返回1代表升序,返回-1代表降序,返回0代表相等

 

var arr = [3,32,5,34];

arr.sort(comparison_function);

alert(arr.toString());  //output “3,5,32,34”

如果要降序?

function comparison_function(value1,value2){

  if (value1<value2)

     return 1

  else if (value1>value2)

     return -1

  else

    return 0

}

 

var arr = [3,32,5,34];

arr.sort(comparison_function);

alert(arr.toString());  //output “34,32,5,3”

ureverse()方法

var arr = [3,32,5,34];

arr.sort(comparison_function);

alert(arr.toString());  //output “34,32,5,3”

//反转

arr.reverse();

alert(arr.toString()); //output “3,5,32,34”

说明:如果数组已经以一种顺序排序了,使用reverse()方法将其按照相反的顺序排序,要比再次调用sort()快得多

 

三:表格排序

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
  //升序
   function comparisonTRs(oTR1,oTR2){
      var value1 = oTR1.cells[0].firstChild.nodeValue;
      var value2 = oTR2.cells[0].firstChild.nodeValue;
      if (value1<value2)
         return -1
      else if (value1>value2)
         return 1
      else
        return 0
   }
   var sourceHeader = "";
    function SortTable(sTableID,header)
    {
       
       var oTable = document.getElementById(sTableID);
       var oTBody = oTable.tBodies[0];
       var colDataRows = oTBody.rows;
       var oTRs = new Array();
       for(var i=0;i<colDataRows.length;i++)
       {
          oTRs.push(colDataRows[i]);
       }
       if (!header.sortType)
       {
          //alert("ok");
          sourceHeader = header.innerHTML;
          oTRs.sort(comparisonTRs);
          header.sortType="ASC";
          header.innerHTML=sourceHeader+"↑";
       }else
       {
          oTRs.reverse();
          header.innerHTML=sourceHeader+"↓";
          if (header.sortType=="ASC")
          {
             header.innerHTML=sourceHeader+"↓";
             header.sortType="DESC";
          }else
          {
             header.sortType="ASC";
             header.innerHTML=sourceHeader+"↑";
          }
       }
       
       var oFragment = document.createDocumentFragment();
       for(var i=0;i<oTRs.length;i++)
       {
         oFragment.appendChild(oTRs[i]);
       }
       oTBody.appendChild(oFragment);
    }
//-->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
 
//-->
</SCRIPT>
<table border="1" id="table1" width=200>
   <thead>
     <tr>
        <th onclick = "SortTable('table1',this)" style="cursor:pointer">first Name</th>
     </tr>
    </thead>
    <tbody>
       <tr>
          <td>zhang</td>
       </tr>
       <tr>
          <td>wang</td>
       </tr>
       <tr>
          <td>li</td>
       </tr>
       <tr>
          <td>zhaoliu</td>
       </tr>
       <tr>
          <td>aaaa</td>
       </tr>
    </tbody>
</table>
</BODY>
</HTML>

 

function SortTable(sTableID)	{	   var oTable = document.getElementById(sTableID);	   var oTBody = oTable.tBodies[0];	   var colDataRows = oTBody.rows;	   var oTRs = new Array();	   for(var i=0;i

 

改进二:

改进二:function SortTable(sTableID)	{	   var oTable = document.getElementById(sTableID);	   var oTBody = oTable.tBodies[0];	   var colDataRows = oTBody.rows;	   var oTRs = new Array();	   for(var i=0;i

 

实例二:

 New Document 

Click on the table header to sort in ascending order.

Last Name First Name
Smith John
Johnson Betty
Henderson Nathan
Williams James
Gilliam Michael
Walker Matthew

 

表格排序:

1、创建转换函数 function convert(sValue,sDataType)   {      switch (sDataType)      {                           case "int":		         return parseInt(sValue);		  case "float":		         return parseFloat(sValue);		  case "date":		         return new Date(Date.parse(sValue));		  default		         return sValue.toString();      }   }

2、修改代码:

  function genCompareTo(iCol,sDataType){
      return function compareTRs(oTR1,oTR2)
    {
       var sValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue,sDataType);
  var sValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue,sDataType);
 
  if (sValue1<sValue2)
{
      return -1;
  }else if (sValue1>sValue2)
  {
      return 1;
  }else{
      return 0;
  }
    }
    }

 

  高级排序

问题:

如果表格中出现链接、图像或某种HTML的内容,而用户仍希望对其进行排序。最常见的情况也许就是包含图标的列.

解决方案:

1、候选值

表格中的每个单元格必须包含可排序的值,也就是说至少有一个值属于以下数据类型:字符串、整形、浮点数和日期,因为HTML代码不能直接被转化为这些数据类型,所以需指定一个候选值。可以通过以下方式实现:如:

<td value = “blue”><img src = “blueimag.gif”/></td>

 New Document 

Click on the table header to sort.

Type Filename
My Resume.doc
Fall Budget.xls
How to be a better programmer.pdf
My Old Resume.doc
Notes from Meeting.txt
Backups.zip
Spring Budget.xls
Job Description - Web Designer.doc
Saved Web Page.pdf
Chapter 1.doc

 效果:

 

四:经典的鼠标拖尾

            Simulated Drag And Drop Example                                        

Try dragging the red square.

 

Try dragging the red square.

var iDiffX=0;var iDiffY = 0;function handleMouseDown() { var oEvent = window.event; var oDiv = document.getElementById("div1"); iDiffX = oEvent.clientX - oDiv.offsetLeft; iDiffY = oEvent.clientY - oDiv.offsetTop; document.body.attachEvent("onmousemove",handleMouseMove); document.body.attachEvent("onmouseup",handleMouseUp); }function handleMouseMove() { var oEvent = window.event; var oDiv = document.getElementById("div1"); oDiv.style.left = oEvent.clientX - iDiffX; oDiv.style.top = oEvent.clientY - iDiffY; oDiv.style.cursor="move"; }function handleMouseUp() { var oDiv = document.getElementById("div1"); document.body.detachEvent("onmousemove",handleMouseMove); document.body.detachEvent("onmouseup",handleMouseUp); oDiv.style.cursor="default"; }

 

转载于:https://www.cnblogs.com/sunliyuan/p/5869663.html

你可能感兴趣的文章
spring测试
查看>>
c++ mfc 曲线图像的实现资料网址
查看>>
JetBrains系列WebStorm等中文输入法无法跟随光标的问题的解决办法
查看>>
解决Admob Banner首次展示不显示的问题
查看>>
系列6:进程间通信
查看>>
日志配置
查看>>
第四周作业 简单地邮件发送实现
查看>>
[转载]读史记札记26:容人岂皆有雅量
查看>>
表达式计算(模拟)
查看>>
Unity3D 游戏引擎之实现平面多点触摸(二)
查看>>
【Xilinx-Petalinux学习】-02-建立PetaLinux工程
查看>>
TeX中的引号
查看>>
Python 模块(module)
查看>>
region实现大纲效果
查看>>
day1
查看>>
[No0000B5]C# 类型基础 值类型和引用类型 及其 对象判等 深入研究1
查看>>
AJAX JSONP源码实现(原理解析)
查看>>
Java 表达式解析(非原创)
查看>>
[洛谷P4234]最小差值生成树
查看>>
LiveNVR传统安防摄像机互联网直播-二次开发相关的API接口
查看>>