一、创建子节点

发帖在顶部显示:

var oBtn = document.getElementById('btn1');
var oUl = document.getElementById('ul1');

oBtn.onclick=function(){
  var oLi = document.createElement('li');
  var lil = document.getElementsByTagName('li');
  var otxt = document.getElementById('txt1');
  oLi.innerHTML=otxt.value;
  if(lil.length==0){
    oUl.appendChild(oLi);
  } else {
    //父节点.insertBefore(子节点,位置)
    oUl.insertBefore(oLi,lil[0]);//插入到某个子节点的前面
  }
}

二、删除子节点

var oA = document.getElementsByTagName('a');
var oUl = document.getElementById('ul1');
for(var i=0;i<oA.length;i++){
  oA[i].onclick=function(){
  oUl.removeChild(this.parentNode);
  }
}

三、遍历子节点

childNodes 属性可返回指定节点的子节点的节点列表。包括HTML节点,所有属性,文本。可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点
var oUl = document.getElementById('ul1');
for(var i=0;i<oUl.childNodes.length;i++){
  if(oUl.childNodes[i].nodeType==1){
    oUl.childNodes[i].style.background='red';
  }
}
注意:
childNodes属性返回的子节点中,包含了文本节点与元素节点。如果只希望遍历元素节点,建议使用children属性则更为直接方便!

parentNode:

var oA = document.getElementsByTagName('a');
for(var i=0;i<oA.length;i++){
  oA[i].onclick=function(){
    this.style.display='none';
    this.parentNode.style.display='none';//alert();
  }
}

offsetParent;

<div id="div1" style="width:100px;height:100px; background:red; margin:100px; position:absolute;">
<div id="div2" onClick="alert(this.offsetParent.id)" style="width:100px;height:100px; background:yellow; position:absolute;left:100px;top:100px;"></div>
</div>

四、用class选元素

原代码:

var oUl=document.getElementById('ul1');
var aLi=oUl.getElementsByTagName('li');
 var i=0;
for(i=0;i<aLi.length;i++)
{
  if(aLi[i].className=='box')
  {
    aLi[i].style.background='red';
  }
}

封装后的代码:

function getByClass(oParent, sClass)
{
  var aEle=oParent.getElementsByTagName('*');
  var aResult=[];
  var i=0;
  for(i=0;i<aEle.length;i++)
  {
    if(aEle[i].className==sClass)
    {
      aResult.push(aEle[i]);
    }
  }

  return aResult;
}

window.onload=function ()
{
var oUl=document.getElementById('ul1');
var aBox=getByClass(oUl, 'box');
 var i=0;
for(i=0;i<aBox.length;i++)
{
  aBox[i].style.background='yellow';
}
}

js基础之DOM的更多相关文章

  1. 【2017-03-28】JS基础、DOM操作

    一.JS基础 1.javascript功能 ⑴进行数据运算 ⑵控制浏览器功能 ⑶控制元素的属性.样式.内容 2.javascript位置和格式 可以放在html页的任意位置,也可以创建一个以js结尾的 ...

  2. js基础例子dom+原型+oop基础知识记录01

    //oo:概念是计算机中对于现实世界的理解和抽象的方法 //由计算机利用编程技术发展到现在的产物 //面向对象几要素 //对象:由属性和方法组成的集合 //属性:保存数据,存储在对象内存空间中的唯一的 ...

  3. js基础之DOM中元素对象的属性方法

    在 HTML DOM (文档对象模型)中,每个部分都是节点. 节点是DOM结构中最基本的组成单元,每一个HTML标签都是DOM结构的节点. 文档是一个    文档节点 . 所有的HTML元素都是    ...

  4. JavaScript (JS)基础:DOM 浅析 (含数组Array、字符串String基本方法解析)

    ①文本对象document: 例如:document.getElementById()    只获取一个对象          document.getElementsByTagName()   获取 ...

  5. JS基础(一)dom小实例

    DOM的新增示例 <script language="JavaScript"> window.onload = function(){ //createDocument ...

  6. js基础篇(dom操作,字符串,this等)

    首先我们来看这样一道题 <div id='foo' class='aa bb cc'></div>写出如何判断此div中是否含有aa(注:aa成立,aaa不成立) 首先,我们一 ...

  7. 【JS基础】DOM操作

    appendChild() //向节点添加最后一个子节点 createElement() //创建元素节点 createTextNode() //创建文本节点,字符串值

  8. js基础之DOM中document对象的常用属性方法

    -----引入 每个载入浏览器的 HTML 文档都会成为 Document 对象. Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问. 属性 1  document.an ...

  9. JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

       前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...

随机推荐

  1. Nginx模块学习之————accesskey权限模块使用(简单的m3u8防盗链)

    配置文件:http://www.cnblogs.com/tinywan/p/5983694.html 通过加密后的文件: 正确地址:curl -i http://访问的IP地址(这里是直播节点IP地址 ...

  2. LotteryDrawing

    import java.util.*; public class MyTest{ public static void main(String[] args){ Scanner in = new Sc ...

  3. android MTK驱动背光唤醒流程

    在标准的android驱动中,睡眠唤醒流程非常清晰,能够较方便的更改lcd唤醒时间和led背光的点亮时间,但是也很容易出现问题,比如说闪屏,唤醒慢! 出现闪屏有两个原因 1. 开背光时间在唤醒lcd前 ...

  4. Python学习(15)文件/IO

    目录 Python 文件I/O 打印到屏幕 读取键盘输入 打开和关闭文件 File对象属性 文件定位 重命名和删除文件 Python的目录 Python 文件I/O 本章只讲述所有基本的的I/O函数, ...

  5. Traffic Sign Recognition with Multi-Scale Convolutional Networks

    总结一下文中几点值得学习的地方: 1,卷积神经网络的结构图:Multi-Scale Features.   因为它提取的特征的分层的,对吧,虽然最后 一层可以提供全局信息,但是呢,前面的几层可以提供更 ...

  6. FragmentPagerAdapter与FragmentStatePagerAdapter区别

    在一个 Android 应用中,我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动.不过我碰到了一个问题,即当 Fragment 对应的数据集发生改变时,我希 ...

  7. IE浏览器GET传参后台乱码

    ie里面 get传递的字符串 为 gb2312  ,后台用的是utf-8类型  所以用 POST传递字符串到后端 否则进行js参数转码 encodeURI(""); 后端解码

  8. 通过NORFLASH中的uboot烧写uboot到nandFlash

    在mini2440的教程中,在构建nandflash系统的时候是首先通过supervivi借助dnw烧写uboot.bin到nand flash 第零块, 由于我使用的是64位操作系统,usb驱动没安 ...

  9. myeclipse 配置svn资源库

    只需在dropins文件夹里放入features,plugins两个文件夹:访问这个路径下载即可:http://pan.baidu.com/s/1dDnJKXF

  10. ajax请求超时时间

    http://www.cnblogs.com/charling/p/3356216.html get post 请求 http://www.cnblogs.com/oneword/archive/20 ...