初探JavaScript(二)——JS如何动态操控HTML

  除去五一三天,我已经和《JavaScript Dom编程艺术》磨合了六天,第一印象很好。慢慢的,我发现这是一块排骨,除了肉还有骨头。遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次接触JS,没有必要花费过多时间去钻死胡同,先混个脸熟,以后再来拜访也未尝不可嘛。就这样,踉踉跄跄、囫囵吞枣似的已经过五关斩六将,到达第十一章。

  书中有几个章节并没有从语法、技术等层面介绍JavaScript,而是站在一个全局的角度,立足编程原则和习惯道破了我们该如何看待和使用这门语言,主要有以下几点:

    1.   JavaScript语法相对简单,易学易用,基于该特性,是的JS具有两面性,一方面,容易学习和掌握,使得其能被大家在短时间内接受成为可能;另一方面,易学易用也以为着缺乏高水平的质量控制措施。
    2.   鉴于历史遗留问题(浏览器之争带来的后遗症),使得兼容问题一度成为JS发展路上的一大阻力,所以预留退路很重,简言之,JS代码的健壮性尤为重要。
    3.   JavaScript代码分离。如何做到HTML负责构建页面元素,JavaScript负责行为,CSS负责布局,各司其职,这也是衡量JS语言质量或是开发者素质的标尺。

  

  有了这些隐形的规范,更加有助于编码的规范。

  下面介绍一些常用的方法,用于动态操控HTML元素:

  document.write():

  该方法能够方便快捷地把字符串插入到文档中。

  该方法最大的缺点就是它违背了上面提到的JavaScript分离原则,即使把document.write语句挪到外部函数里,也还是需要在HTML文档的<body>部分使用<script>标签才能使用这个方法,也就是说它的存在很大程度的依赖于HTML中的标签和位置。

  innerHTML:
  该属性用来读、写某给定元素里的HTML内容。

  该属性与document.write()方法功能类似,但是其能够有效实现JavaScript代码从HTML文档中分离出来,而不需要在HMTL文档的<body>部分插入<script>标签。

  举例:

 1 <html>
 2 <head>
 3 <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
 4 <title>innerHTML</title>
 5 <script>
 6 window.onload = function(){
 7     vartestdiv = document.getElementById("testdiv");
 8     alert(testdiv.innerHTML);
 9 }
10 </script>
11 </head>
12 <body>
13 <div id = "testdiv">
14 <p>This is <em>my</em> content.</p>
15 </div>
16 </body>
17 </html>

  appendChild():

  该方法在指定元素的最后一个子节点之后添加节点。

  举例(借用W3C上的案例):

 1 <!DOCTYPE html>
 2 <html>
 3 <body>
 4 <ul id="myList1"><li>Coffee</li><li>Tea</li></ul>
 5 <ul id="myList2"><li>Water</li><li>Milk</li></ul>
 6 <p id="demo">请点击按钮把项目从一个列表移动到另一个列表中。</p>
 7 <button onclick="myFunction()">亲自试一试</button>
 8 <script>
 9 functionmyFunction()
10 {
11 var node=document.getElementById("myList2").lastChild;
12 document.getElementById("myList1").appendChild(node);
13 }
14 </script>
15 </body>
16 </html>

  执行前界面:

  点击按钮后:

  从两幅图可以看出,在Milk被append到myList1中时,其也会从myList2中消失。

  insertBefore(newElement,targetElement):

  该方法把一个新元素插入到一个现有元素的前面。

  举例:

 1 <html>
 2 <head>
 3 <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
 4 <title>document write</title>
 5 <script>
 6 window.onload = function(){
 7 var target = document.getElementById("p2");
 8     var para = document.createElement("p");
 9     para.innerHTML = "我是插队的"
10     vartestdiv = document.getElementById("testdiv");
11     testdiv.insertBefore(para,target);
12 }
13 </script>
14 </head>
15 <body>
16 <div id = "testdiv">
17 <p id = "p1">我是第一</p>
18 <p id = "p2">我是第二</p>
19 <p id = "p3">我是第三</p>
20 </div>
21 </body>
22 </html>

  执行后:

  appendChild方法是在父级节点中的子节点的末尾添加新的节点(相对于父级节点来说)。 
  insertBefore方法是在已有的节点前添加新的节点(相对于子节点来说的)。

  本文链接:《初探JavaScript(二)——JS如何动态操控HTML

  如果对你有用,欢迎点赞哦,也欢迎加群讨论。

时间: 2024-10-27 11:19:46

初探JavaScript(二)——JS如何动态操控HTML的相关文章

初探JavaScript(四)——JS另类的作用域和声明提前

前言:最近恰逢毕业季,千千万万的学生党开始步入社会,告别象牙塔似的学校生活.往往在人生的各个拐点的时候,情感丰富,感触颇深,各种对过去的美好的总结,对未来的展望.与此同时,也让诸多的老“园”工看完这些小年轻的文章后感触良多,不禁也要写上几笔,所以就出来了很多类似“毕业两年小记”.“毕业五年有感”…… 可能就是某篇博文的一句话,某碗心灵鸡汤就拨动了你心里的那根尘封已久的弦,让你情不自禁的点了个赞,还忍不住的要在下面评论区留下自己此刻心潮澎湃的印记. 我今天不是来送鸡汤的,鸡汤虽好,可不要贪杯哦.

js的动态加载、缓存、更新以及复用(二)

上一篇发出来后得到了很多回复,在此首先感谢大家的热情捧场!有的推荐第三方框架,比如 In.js.requrieJS.sea.js.lab.js等.这个开阔了眼界,以前只知道sea.js,省去了自己搜索的麻烦.也用了点时间简单看了一下,因为每一个都是大块头,都有自己的理念,如果只是简单使用的话,那么谁便找一个就可以了,但是我习惯把原理弄清楚.因为我觉得虽然不知道原理也可以使用,但是知道了原理后,可以用的更好. 主要看的是sea.js,目前简单的理解是:一个加载js的机制 + 模块化编程(CMD规范

初探JavaScript(三)——JS带我碰壁带我飞

已经写了两篇关于小白的JavaScript之行,不可否认,每一种语言都有其精华与糟粕之处,来不及细细体味其精华奥妙,也没法对其评头论足,只能先了解,后深入.到目前为止已经看完<JavaScript Dom 编程艺术>(ps:看过书评,网友对其褒贬不一,个人感觉还是不错的,适合初学者.不是每本书都能得到所有读者的认可,只能让部分适合的读者对其称赞,而我,就是其中一个). 前面介绍了JavaScript的一些常用方法,如何与DOM.HTML配合完成一些交互.今天主要介绍JavaScript在动画效

第十二篇 JavaScript(简称JS) 实现显示与隐藏

JavaScript JavaScript简称JS.JS是脚本语言,它是一种轻量级的编程语言,是可以插入HTML页面的编程代码,几乎所有现代浏览器都是支持的. 理论老师不行,我就抄袭手册上的一些关键字段给大家,然后我们写代码来学习. JS也和CSS一样,是可以外部引用的,但是CSS用的是link标签,而JS用的则是script标签,和CSS一样,要写在head标签里哦,引用文件都要写在这里的. 我们来写一个看看: <head lang="en"> <script sr

JavaScript二(第一个js程序)

一.<script>xxxx</script>标签解析 1.charset :可选,表示通过src属性指定的字符集,由于大多数浏览器忽略它,所以很少有人用它2.defer:可选.表示脚本可以延迟到文档完全解析和显示之后再执行,由于大多数浏览器不支持,故很少用3.language:已经废弃.原来用于代码使用的脚本语言,由于大多数的浏览器都忽略它,所以不要用4.src:可选,表示包含要执行代码的外部文件5.type:必需,可以看作是language的替代品,表示代码使用的脚本语言的内容

分析js操作动态获取屏高并触发按钮点击事件回到页面窗口的顶部

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>回到顶部</title> <style> .d1{ width:100%; height:5000px; } #btn{ width:100px; height:40px; position:fixed; right:0; bottom:0; dis

初探JavaScript(一)——也谈元素节点、属性节点、文本节点

Javascript大行其道的时候,怎么能少了我来凑凑热闹^_^ 基本上自己对于js的知识储备很少,先前有用过JQuery实现一些简单功能,要论起JS的前世今生,来龙去脉,我就一小白.抱起一本<Javascript Dom编程艺术>,开始慢慢走近JS,与它套近乎,今天是第三天了,从目前来看,比较好相处.就此动笔,是一个回忆复习的过程,权当是自己的一份读书笔记. JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,已经被广泛用于Web应用开发,常用来为网

js如何动态为指定的元素添加内容

js如何动态为指定的元素添加内容:在实际应用中要根据代码的执行情况来动态的创建一个元素,然后添加到指定的元素,下面就通过一个简单的实例简单的介绍一下如何实现此效果,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/"

前端之JavaScript:JS简单介绍

JavaScript(JS)之简单介绍 一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript 微软随后模仿在其IE3.0