默然说话

一个异想天开的人做着异想天开的梦

牟勇ID:mouyong
61760次访问,排名1575好友4人,关注者5
我快乐,我存在
mouyong的文章
原创 108 篇
翻译 4 篇
转载 29 篇
评论 12 篇
默然的公告
如果要联系我,希望能说明来意,谢谢.

点击这里给我发消息

Google

最近评论
peigen:又~~~~为什么是又呢???
dcopperfield:顶下
gaoyunpeng:无意中进入到这个博客,很快就被里面的内容所吸引,感觉很有意思,不知道为什么会有这样的感觉,或许只是一种直觉上的吸引吧,一直在看博客里的文章,觉得很不错,天天等更新,哈哈,终于看到新的文章啦~
我会一直关注的~
mouyong:谢谢你的鼓励,我会更加努力。
了祝愿你实现自己的理想,达成自己的目标
wsspy007:牟老师,我发现你是我见过最好的老师了,为学生考虑最多,一切为学生着想,不知道牟老师还记得我么,张伟(无名小辈肯定你是忘记了),第一期跟杨大宇他们在一个班的,补考两次都没有及格,我现在不在昆明了,在胜利油田,这里一切都很好,一个月的薪金能顶得上昆明3-5个月的薪水,但是我不喜欢这份工作,钱固然多,但是从学校出来步入社会以后才发现,我还是应该走软件开发这条路,现在每天我只睡4-6个小时,工作12……
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 教案:转换课程第2章DOM编程-document对象收藏

    新一篇: 教案:转换课程第3章表单验证及相关特效 | 旧一篇: 教案:S2-Y2转换课程第1章常见的CSS样式

    因为各种原因,本文中缺少部分内容,不便之处请原谅。

    如有问题,请留言,并留下联系方式,我会尽快回复。

    如果这个对你有用,请回贴以示支持,谢谢。

    授课教师:牟勇

    课时:100分钟

     

    l  整章授课思路l  本章重点

    n本章共有五个知识点:DOMdocument对象,制作浮动广告窗口,制作全选特效,常见错误

    nDOM可以从HTML标记树谈起,先介绍HTML标记树,节点等概念,之后引出:要动态改变HTML标记树,就需要使用DOM,之后介绍什么是DOM,最后介绍HTMLDOM模型。

    ndocument对象:首先介绍document对象的两个DOM方法,需要补充说明的是,每一个树的节点都有对应的DOM方法,而我们介绍的两个document对象的DOM方法是每一个元素节点(也就是对应于html标记的节点)都有这两个DOM方法。

    n简单介绍了document对象的DOM方法之后,通过两个特效来说明这两个方法的使用。

    n最后说明常见错误。

    n什么是DOM

    ndocument对象的属性和方法

    nCSS常用属性

    l  本章难点

    n会创建个性化的表格

    n会创建个性化的表单

    l  本章工作任务

    u  制作浮动的广告图片特效

    u   制作带关闭按钮的浮动窗口

    u   制作全选/全不选特效

    l   整章授课思路

    n本章共有

    n首先介绍转换课程的基本内容,目标。

    n介绍本章目标:使用Eclipse平台开发Java程序,学会使用调试解决程序错误

    n使用Eclipse平台开发Java程序:通过示例和练习,让学员熟悉Eclipse的基本操作。

    n调试:通过一个生活案例引入调试的概念,然后教会学员单步调试,并学会观察变量的变化。

    回顾:   [5分钟]

    CSS外部样式表有哪些引用方法?

    A:hover是什么意思?

    如果我要更改背景色,应使用哪个样式属性?

    如果我要更改字体大小,应使用哪个样式属性?

    如果我要将右边框粗细更改为1px,将左填充更改为0px,应该怎么写?

    预习检查:   [5分钟]

    document对象有哪些常用方法?

    bgcolor属性用来设置什么?

    简要说明如何制作浮动的广告图片。

    课程知识点讲解:   

    DOM-文档对象模型:[10分钟]

    HTML的树状结构

    如果我们分析常见的页面HTML源代码,我们会发现存在树状的文档结构。

    其中,<html>是最顶一层,我们称它为根节点,根节点是没有上级(也称为父节点)的节点,在它的下面有两个子节点:<head><body>,而<html>是它们的父节点。由于<head><body>它们有共同的父节点,所以我们把这两个节点的关系称为兄弟节点。我们还会看到在这棵树的最底层有一些节点,它们没有子节点。这些节点我们把它们称为叶节点。

    问题:发现这个规律对我们有什么用?

    答案:由于HTML的内容是静态的,如果我们要操作这些元素,就必须首先准确找到这些元素。由于它们是一个树状结构,各自的位置是相对固定的,这一点就保证了我们可以准确的找到我们想要修改的元素。这个树状结构我们给它取了一个名称,叫DOM(Document Object Model)

    (出示示例:修改超链接)

    什么是DOM

    DOMDocument Object Model ,它是W3C国际组织的一套Web标准,它定义了访问HTML文档对象的一套属性、方法和事件

    <html>

    <head>

    <script type="text/javascript">

    function changeLink()

    { document.getElementById('myAnchor').innerHTML="搜狐" ;

    document.getElementById('myAnchor').href="http://www.sohu.com" ;  }

    </script>

    </head>

    <body>

    <a id="myAnchor" href="http://www.taobao.com">淘宝</a>

    <input type="button" onclick="changeLink()" value="使用DOM改变链接">

    </body>

    </html>

    教员应重点解释JavaScript函数中的getElementById()方法的意义,以及innerHTML属性和href属性的意义。

    HTMLDOM对象模型

    首先出示幻灯片上的浏览器图形,依次说明window对象,history对象,document对象,form对象的具体含义,给学员以形象的记忆点,之后告诉学员,由于存在这样一个层次结构,所以在我们引用某个HTML元素时,我们要按顺序一层一层的进行引用,例如我们要找到表单“myform”我们可以写做window.document.myform,强调书写格式:每个对象之间用“.”分隔。

    之后出示幻灯片上的HTML DOM对象模型图,说明对象的名称,它们之间的层次关系。

    document对象:[10分钟]

    引入:认识了DOM的重要性,我们就来学习在HTML中最常用的一个对象:document对象的属性和方法吧

    属性或方法

    说明

    bgColor

    背景颜色

    getElementById()

    通过ID获得元素

    getElementsByName()

    通过name属性获得一组元素

     

    由于4.0中已经学过了document对象的属性和方法,所以,只需要简单介绍即可,重点强调getElementById()getElementsByName()方法,它们的相同的地方就是都能获得HTML元素对象,不同的地方就是getElementById()方法是根据id来获得一个元素对象,而getElementsByName()方法是根据name来获得一组元素对象。

    制作浮动的广告图片[20分钟]

    引入:通过简单的学习,我们已经知道几个document重要的属性和方法,下面我们来具体运用一下它们,看看我们都能做些什么吧!

    问题:如何在页面上方显示广告图片?如何控制图片的移动?

    分析:使用DIV层,把图片放在层中,然后使用JavaScript控制层的位置坐标

    实现思路:在页面中插入层,然后在层中插入图片。编写脚本,使用getElementById()方法获取层对象,然后根据鼠标滚动的距离移动层的位置。

    常见页面的坐标介绍

    top左上角的y坐标。

    pixelTop左上角的y坐标,与top的区别仅在于:ixelTop是一个整数,所以可以直接参与算术运算,而top是一个字符串,不能直接参与算术运算。

    scrollTop滚动条滚动的距离。

    关键代码:

    <SCRIPT language="javascript">

      var advInitTop=0;

      function inix( ){

         x=document.getElementById("advLayer").style.pixelTop;   }

    function move( ){   

         document.getElementById("advLayer").style.pixelTop=

         advInitTop+document.body.scrollTop;

    }    

         window.onscroll=move ;  //当页面滚动时调用move( )函数

    </SCRIPT>

    ……   

      <BODY  onload="inix( )" >

    ……

      <DIV     id="advLayer" style="position:absolute;       left:16px;      

                   top:129px;  width:144px;        height:95px;  z-index:1;">

                  <A href="http://www.taobao.com"><IMG src="images/advpic.gif"   

                   width="180" height="230" border="0"></A>

    </DIV>

    教员应讲解关键代码(红色部分),重点说明函数的两种调用方式:HTML调用和JS调用(土红色部分)

    制作带关闭按钮的浮动窗口[20分钟]

    引入:我们前面已经实现了一个可以随着滚动条跑的广告窗口,但这样的广告窗口有个缺点,就是当用户不想看到它的时候无法关闭它。

    问题:如何实现带关闭功能的浮动窗口?

    分析:做一个图片,再作一个层,把图片贴到这个层里面,用它来实现关闭(点击时隐藏层)

    实现思路:

    1、使用getElementById( )方法获得层对象

    2、设置层的样式style的显示属性display="none"

    <SCRIPT language="javascript">

    var advInitTop=0;

    function inix( ){

       advInitTop=document.getElementById("advLayer").style.pixelTop;  }

    function move( ){      

       document.getElementById("advLayer").style.pixelTop=

       advInitTop+document.body.scrollTop;   }

    function closeMe( ){  

       document.getElementById("closeLayer").style.display="none";

       document.getElementById("advLayer").style.display="none";    }   

    window.onscroll=move ;    //当页面滚动时调用move( )函数

    </SCRIPT>

      <BODY  onload="inix( )" >

    <DIV id="closeLayer"  onclick="closeMe( )"   

       style="position:absolute;left:166px;top:132px;width:27px;  

       height:19px;z-index:2;">

       <IMG src="images/close.jpg" width="26" height="18"></DIV>

    教员应强调隐藏层的代码(土红色部分)

    如果要隐藏,使用“none”字面量,如果要显示,使用“block”字面量。

    下面是参考内容(这部分内容教员可以有选择性的与学员说明,不需要全部讲)

    block :  CSS1 块对象的默认值。用该值为对象之后添加新行
    none :
     CSS1 隐藏对象。与visibility属性的hidden值不同,其不为被隐藏的对象保留其物理空间
    inline :
     CSS1 内联对象的默认值。用该值将从对象中删除行
    compact :
     CSS2 分配对象为块对象或基于内容之上的内联对象
    marker :
     CSS2 指定内容在容器对象之前或之后。要使用此参数,对象必须和:after:before 伪元素一起使用
    inline-table :
     CSS2 将表格显示为无前后换行的内联对象或内联容器
    list-item :
     CSS1 将块对象指定为列表项目。并可以添加可选项目标志
    run-in :
     CSS2 分配对象为块对象或基于内容之上的内联对象
    table :
     CSS2 将对象作为块元素级的表格显示
    table-caption :
     CSS2 将对象作为表格标题显示
    table-cell :
     CSS2 将对象作为表格单元格显示
    table-column :
     CSS2 将对象作为表格列显示
    table-column-group :
     CSS2 将对象作为表格列组显示
    table-header-group :
     CSS2 将对象作为表格标题组显示
    table-footer-group :
     CSS2 将对象作为表格脚注组显示
    table-row :
     CSS2 将对象作为表格行显示
    table-row-group :
     CSS2 将对象作为表格行组显示

    问题:上一张PPT中示例能实现关闭了,但关闭图片不能跟随滚动,怎么办?

    分析:让关闭图标所在的层像浮动窗口一样,也跟随滚动条同步滚动。

    <SCRIPT language="javascript">

       var advInitTop=0;

       var closeInitTop=0;

    function inix( ){

    advInitTop=document.getElementById("advLayer").style.pixelTop;closeInitTop=document.getElementById("closeLayer").style.pixelTop; }

    function move( ){

       document.getElementById("advLayer").style.pixelTop=

       advInitTop+document.body.scrollTop   ;

       document.getElementById("closeLayer").style.pixelTop=

       closeInitTop+document.body.scrollTop   ;    }

    function closeMe( ) {

        document.getElementById("closeLayer").style.display="none";

        document.getElementById("advLayer").style.display="none";    }

        window.onscroll=move ;  //窗口的滚动事件

    </SCRIPT>

    在原来的基础上再添加一句代码就可以了(土红色部分)。教员可以让学员到老师机上来添加这一句代码,以加强学员对getElementById()方法的使用。

    小结1制作右边栏浮动的带关闭按钮的广告图片

    教员提供练习代码(幻灯片上的超链接已提供了练习代码的链接),学员完成代码填空。

    制作实现全选效果[20分钟]

    引入:制作浮动广告图片到此告一段落。在网页上,我们还会常常看到如下的情况。

    如何给那些复选框提供全选和全不选的功能呢?

    这要解决如下2个问题:

    1、复选框是否选中的属性是哪个?

    答案:checked

    2、写代码逐个复选框设置为true,有没有更好的办法?

    答案:让所有需要选中的复选框为同一个名字,让它们成为一个数组,然后使用循环解决问题。

    实现思路:

    1.创建一组同名复选框

    2、使用getElementsByName( )方法获得一组同名的复选框对象。

    3、通过循环来改变复选框是否被选中属性checked的值。

    <SCRIPT language="javascript">

    function checkAll(boolValue ) {

       var allCheckBoxs=document.getElementsByName("isBuy") ;

       for (var i=0;i<allCheckBoxs.length ;i++)

          {

           if(allCheckBoxs[i].type=="checkbox")          

            allCheckBoxs[i].checked=boolValue ;

          }                                       }

    </SCRIPT>

    ……

     <TR>

        <TD width="6%"><A href="javascript: checkAll(true)">全选 </TD>