JavaScript-DOM学习笔记之动态创建标记

此前的大多数DOM都是用来查找元素,getElementById和getElementsByTagName都可以方便快捷的找到文档中的某个或者某些特定的元素节点,这些元素随后可以用诸如setAttribute(改变某个属性的值)和nodeValue(改变某个元素节点所包含的文本)之类的方法和属性来处理。都是对已经存在的元素做出修改。

本文将通过创建新元素和修改现有元素来改变网页结构

标准的DOM方法可以用来替代innerHTML,他提供了更高的精确性和更强大的功能!

DOM方法:

浏览器显示的内容其实都是属于DOM节点树的,在浏览器看来,DOM节点树才是文档

动态创建标记不是在创建标记,而是在改变DOM节点树。

在DOM看来,一个文档就是一颗节点树。如果你想要从节点数上添加内容,就必须插入新的节点。如果你想添加一些标记到文档,就必须插入元素节点

createElement方法:创建元素节点(诸如<p>,<a>,<span>......)

格式:document.createElement("标签名");

新创建出来的标签已经存在了,但是还不属于任何一颗DOM节点数的组成部分,他只是在js世界的一个孤儿而已,称为:文档碎片(document fragment)

其nodeName=p,nodeType=1

createTextNode方法:创建文本节点(即添加标签内的内容)

格式:document.createTextNode("内容");

appendChild方法:连接(把游离在js世界的孤儿,加入到节点树,找到他的家)

格式:parent.appndChild(child);

有两个顺序方法:

1. 先创建标签,然后把标签追加到节点树种,再创建内容,把内容追加到标签后面

2. 见创建标签,在创建内容,把内容追加到标签里面,然后把标签再追加到节点树中

  本人比较喜欢第二种写法,感觉思路会比较清晰  

例子:在body里面添加一个p标签,在p里面创建一个em标签,内容是:<p>This is <em>my</em> content</p>;

特别提醒:使用appendChild属性插入文本内容不会把之前标签的内容覆盖掉,这个可以与innerHTML对比一下

从上面截图可以发现一个新的问题:<p>标签插在了<script>标签之后,因为插入的标签都是默认自动会排在所有子节点之后 这时我们需要新的方法来控制元素插入的位置;

元素插入位置设置:

insertBofore()方法:这个方法将把一个新元素插入到一个现有元素的前面

格式:parentElement(目标元素的父元素).insertBefore(newElement(新元素),targetElement(目标元素))

介绍:parentNode:获取文档层次中的父对象

技巧:其实并不需要麻烦去找目标元素的父元素,可以利用parentNode,目标元素的父元素 = targetElement.parentNode

可惜的是:我们有一个insertBefore的方法,却没有一个insertAfter的方法;但是我们可以自己写一个insertAfter()函数来代替

insertAfter()函数:

思路:

  1. 判断目标元素是否是parent的最后一个元素,
  2. 如果是,则使用appenChild把新元素插在目标元素之后
  3. 如果不是,则使用insertBofore把新元素插在目标元素的下一个子元素之前。

介绍:nextSibling属性:表示当前节点的下一个节点(其后的节点与当前节点同属一个级别);如果其后没有与其同级的节点,则返回null。

时间: 2024-12-15 08:00:59

JavaScript-DOM学习笔记之动态创建标记的相关文章

JavaScript DOM学习笔记(未完)

获取html内容: 1. document.getElementById(""):接受一个id值,返回的不是内容,而是包括标签在内的所有内容 2. document.getElementsByTagName(""):接受一个标签名(所有属于这个标签名的标签组组成一个数组),返回的不是内容,而是包括标签在内的所有内容 利用数组的方式去找到需要操作的标签arr[i]: 3. document.getElementByClassName(""):接受一

javascript DOM 学习笔记

前言 DOM介绍     DOM基本知识     DOM操作     DOM查找     DOM类型     DOM表格操作   前言 DOM (文档对象模型)是对 HTML 和 XML 文档操作的编程接口.DOM 的功能就是针对页面上的文档元素进行增.删.改.DOM 发光与得利于 DHTML (动态 HTML )的出现.DOM 是跨平台的应用编程接口(API).DOM 的地位非常重要,所以 W3C 1998年10月1日发布了DOM Level 1 规范.下面是 DOM 规范所提供的功能和 DO

Javascript——DOM学习笔记

<!DOCTYPE HTML><html> <head> <meta charset="utf-8" /> <title>DOM基础</title> <style type="text/css"> ol li ol li{font-size: 13px;} </style> </head> <body > <h2>DOM类型</h

JavaScript DOM学习笔记之标签属性

节点: 平时开发中常用的节点是: 元素节点:nodeType值是 1    --> <a>,<p>...... 属性节点:nodeType值是 2    --> title,href,src...... 文本节点:nodeType值是 3    --> 内容 获取html标签内容: document.getElementById(""):接受一个id值,返回的不是内容,而是包括标签在内的所有内容 document.getElementsByTa

JavaScript 动态创建标记与Ajax

JavaScript 动态创建标记与Ajax 一:简介 前面都是针对已经存在的标记进行操作.JavaScript同样可以动态创建标记并且与现有标记组合生成新的Document.同时简单的介绍了Ajax. 二:动态创建标记与组合 相关方法: /** * Some old-shcool method */ document.write("str"); var node = document.getElementById('id'); var htmlValue = node.innerHT

javascript面向对象学习笔记(二)——创建对象

javascript面向对象学习笔记(二)--创建对象 工厂模式 该模值抽象了创建具体对象de过程.用函数来封装噫特定接口创建对象的细节. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var person1=createPerson("Chiaki&

动态创建标记的三种方法

动态创建标记: 1.document.write() 可以直接把字符串插入文档中,最大的缺点是它违背了“行为应该与表现分离”的原则.避免使用document.write()方法. 2.innerHtml属性: innerHtml属性可以用来读.写某给定元素的html内容,是HTML的专有属性. 3.DOM方法: (1)创建新的元素:createElement()方法: (2)把新创建的节点插入某个文档的节点树:appendChild()方法: (3)创建文本结点:createTextNode()

Web Service学习笔记:动态调用WebService

原文:Web Service学习笔记:动态调用WebService 多数时候我们通过 "添加 Web 引用..." 创建客户端代理类的方式调用WebService,但在某些情况下我们可能需要在程序运行期间动态调用一个未知的服务.在 .NET Framework 的 System.Web.Services.Description 命名空间中有我们需要的东西. 具体步骤: 1. 从目标 URL 下载 WSDL 数据. 2. 使用 ServiceDescription 创建和格式化 WSDL

JavaScript正则表达式学习笔记之一 - 理论基础

自从年前得空写了两篇文章之后就开始忙了,这一忙就是2个月??.当时信誓旦旦说的定期写篇博客的计划也就泡汤了??,不过好在最近有空,顺便总结一下这两个月遇到的几个问题.第一个问题就是项目中用到了一些正则才发现之前被自己忽略的正则是时候补一补了.恰逢今天周六??,就把自己学习JavaScript正则表达式的笔记整理成文,写了这篇关于正则表达式理论基础的文章,希望本文能对有需要的同学提供帮助.号外:本文相对基础,大神请忽略??. 一. 基本概念 正则表达式是用于匹配字符串中字符组合的模式. 一种几乎可