慕课网javascript 进阶篇 第九章 编程练习

把平常撸的码来博客上再撸一遍既可以加深理解,又可以理清思维。还是很纯很纯的小白,各位看官老爷们,不要嫌弃。最近都是晚睡,昨晚也不例外,两点多睡的。故,八点起来的人不是很舒服,脑袋有点晕呼呼,鉴于昨晚看到了这章的编程练习,想着自己DOM编程艺术也差不多看完了,高级3也看了点,所打算开始多敲代码了。
谁知,看着编辑器一脸懵逼,不知道如何啃下这块骨头,米思绪,写着也没什么感觉,索性就不写了,这不下午才来撸它。

   要求如下:
<!DOCTYPE html>
<html>
 <head>
  <title> new document </title>
  <meta http-equiv="Content-Type" content="text/html; charset=gbk"/>
  <script type="text/javascript"> 

      window.onload = function(){

     // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。

     }

      // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;

     // 创建删除函数

  </script>
 </head>
 <body>
       <table border="1" width="50%" id="table">
       <tr>
        <th>学号</th>
        <th>姓名</th>
        <th>操作</th>
       </tr>  

       <tr>
        <td>xh001</td>
        <td>王小明</td>
        <td><a href="javascript:;" >删除</a></td>   <!--在删除按钮上添加点击事件  -->
       </tr>

       <tr>
        <td>xh002</td>
        <td>刘小芳</td>
        <td><a href="javascript:;" >删除</a></td>   <!--在删除按钮上添加点击事件  -->
       </tr>  

       </table>
       <input type="button" value="添加一行"  />   <!--在添加按钮上添加点击事件  -->
 </body>
</html>

看好了要求就开始撸吧。 先写个删除函数。

function del() {
           var trnode=document.getElementsByTagName("tr");//取得所有tr元素节点(注意:是个数组);

           for(var i=0;i<trnode.length;i++){
               trnode[i].lastChild.onclick=function () { //用for循环对td的onclick事件进行绑定 注意绑定的td节点
                                                          //而不是tr节点
            this.parentNode.parentNode.removeChild(this.parentNode);
               //这个地方地方得用关键字this,关于为什么用this 而不是变量 i 不懂的可以去看我上一篇的那个案例
                       }
                  }
               }

接下来添加tr标签:

function addone(){
    var sumtr=document.getElementsByTagName(‘tr‘);//得到所有tr元素节点的数组;
    var lasttr=sumtr[sum.length-1];//最后一个tr元素节点
    var newtr=document.createElement(‘tr‘);//创建一个新的tr元素节点
    var newtd1=document.createElement(‘td‘);//创建新的td标签
    var newtd2=document.createElement(‘td‘);//创建新的td标签
    var newtd3=document.createElement(‘td‘);//创建新的td标签
   lasttr.appendChild(newtr);//把新建的tr标签添加到文本中
   newtr.appendChild(newtd1);//把新建的td标签添加到文本中
   newtr.appendChild(newtd2);//把新建的td标签添加到文本中
   newtr.appendChild(newtd3);//把新建的td标签添加到文本中
   // 好了 到这你可以把函数添加到文正去试试效果
  // 好像并不是我们要的效果
 //给newtd1 newtd2 添加个input 标签试试
// 给newtd3添加文本“删除”  还有a标签

   newtd1.innerHTML="<input type=‘text‘ />";
    ewtd2.innerHTML="<input type=‘text‘ />";
   newtd3.innerHTML="<a href=‘javascript:;‘ onclick=‘del()‘>删除  </a>";

//最后的最后把这个函数绑定到 删除 所在的标签上,onclick
}

剩下的就是backgroundColor了,撸吧:

function changecolor(){ 
 var select=document.getElementsByTagName("tr");//得到所有的tr元素节点 

for(i=0;i<select.length;i++){ //for循环遍历数组 绑定事                  
select[i].onmouseover=function () {                      this.style.backgroundColor="#f2f2f2";
           }   // 用this的原理 一模一样  遍历的绑定事件中都用this
                  select[i].onmouseout=function () {
                      this.style.backgroundColor="#fff";//再绑定个鼠标out的事件
                  }
              }
          }
//最后的最后得考虑个问题  如果我把这个changecolor()函数放在windo.onload的那个匿名函数里,那我这个改变背景颜色的函数
只会执行一次,
那我后面创建出来的tr是不是就改变不了背景颜色了,答案是肯定改变不了的, 那我就得想办法了,这个得去好好想想,想到了就是自己的,
深刻点嘛。
因为创建tr的那个函数 只要创建一个tr就要运行一次 那我把这个改变backgroundColor()的函数在他里面调用不就可以了吗?    end。
整理如下:
<!DOCTYPE html>
<html>
<head>
    <title> new document </title>
    <meta http-equiv="Content-Type" content="text/html; charset=gbk"/>

</head>
<body>
<table border="1" width="50%" id="table">
    <tr>
        <th>学号</th>
        <th>姓名</th>
        <th>操作</th>
    </tr>

    <tr>
        <td>xh001</td>
        <td>王小明</td>
        <td><a href="javascript:;" onclick="del()" >删除</a></td>   <!--在删除按钮上添加点击事件  -->
    </tr>

    <tr>
        <td>xh002</td>
        <td>刘小芳</td>
        <td><a href="javascript:;" onclick="del()">删除</a></td>   <!--在删除按钮上添加点击事件  -->
    </tr>

</table>
<input type="button" value="添加一行" onclick="addOne()" />   <!--在添加按钮上添加点击事件  -->

<script type="text/javascript">

    window.onload = function(){
                          changecolor();

        // 鼠标移动改变背景,可以通过给每行绑定鼠标移上事件和鼠标移除事件来改变所在行背景色。

    }
          function  changecolor(){
              var select=document.getElementsByTagName("tr");
              for(i=0;i<select.length;i++){

                  select[i].onmouseover=function () {
                      this.style.backgroundColor="#f2f2f2";
                  }
                  select[i].onmouseout=function () {
                      this.style.backgroundColor="#fff";
                  }
              }
          }
    // 编写一个函数,供添加按钮调用,动态在表格的最后一行添加子节点;

   function addOne(obj){
       var sumtr=document.getElementsByTagName("tr");
       var lasttr=sumtr[sumtr.length-1];
       var newtr=document.createElement("tr");
       var newtd1=document.createElement("td");
       newtd1.innerHTML="<input type=‘text‘ />";
       var newtd2=document.createElement("td");
       newtd2.innerHTML="<input type=‘text‘ />";
       var newtd3=document.createElement("td");
       newtd3.innerHTML="<a href=‘javascript:;‘ onclick=‘del()‘>删除</a>";
       newtr.appendChild(newtd1);
       newtr.appendChild(newtd2);
       newtr.appendChild(newtd3);
       lasttr.parentNode.appendChild(newtr);
       changecolor();
   }
   // 创建删除函数
       function del() {
           var trnode=document.getElementsByTagName("tr");
           for(var i=0;i<trnode.length;i++){
               trnode[i].lastChild.onclick=function () {                  this.parentNode.parentNode.removeChild(this.parentNode);
               }
           }
       }
</script>
</body>
 
时间: 2024-12-20 20:07:19

慕课网javascript 进阶篇 第九章 编程练习的相关文章

慕课网javascript 进阶篇 第十章 编程练习

---恢复内容开始--- 第十章的编程练习是选项卡切换的问题. 先分析下思路, 一.HTML页面布局 我们可以用ui li 标签来写最上面一行的内容:用个div来装下面内容,为了实现更多的效果,我们可以把上面那行的文字放在<a>标签里. 二.CSS样式制作 对文档进行基本的样式设置,font color border 那些 三.JS实现选项卡切换 通过改变DOM的css类名称,当前点击的选项卡显示,其它隐藏. ---恢复内容结束--- 第十章的编程练习是选项卡切换的问题. 先分析下思路, 一.

JavaScript进阶 - 第10章 编程挑战

10-1 编程挑战 现在利用之前我们学过的JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居     200万内购五环三居 140万安家东三环     北京首现零首付楼盘 53万购东5环50平     京楼盘直降5000 中信府 公园楼王现房 家居: 40平出租屋大改造 美少女的混搭小窝      经典清新简欧爱家 90平老房焕发新生      新中式的酷色温情 66平撞色活泼家居      瓷砖就像选好老婆 卫生间烟道的设计

JavaScript 进阶篇的学习~

---恢复内容开始--- 让你认识JS 你知道吗,Web前端开发师需要掌握什么技术?也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HTML+CSS创建一个漂亮的页面,但这还不够,它只是静态页面而已.我们还需使用JavaScript增加行为,为网页添加动态效果.准备好,让JavaScript带你进入新境界吧! JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等

javascript高级程序设计 第九章-- 客户端检测

javascript高级程序设计 第九章-- 客户端检测 客户端检测是javascript开发中最具争议的一个话题,由于浏览器间存在差别,通常需要根据不同浏览器的能力分别编写不同的代码.有下列常使用的客户端检测方法:能力检测:在编写代码之前先检测特定浏览器的能力.例如,脚本在调用某个函数之前,可能要先检测该函数是否存在.这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上.能力检测无法精确地检测特定的浏览器和版本.怪癖检测:怪癖实际上是浏览器中存

c++ primer plus(第6版)中文版 第九章编程练习答案

首先,说明下环境: linux:fedora14: IDE:eclipse: python:python2.7 python框架:django web服务器:apache web服务器的python模块:mod_wsgi 写在前面: 之前用的windows下面的xampp,写的php后台,现在想转向linux下面的python,跟以前一样,选择apache和eclipse作为自己的开发工具. eclipse的python配置, 参见之前的博客:http://blog.csdn.net/zy416

慕课网javascript动画特效 多透明度 源代码

慕课网javascript动画特效 多透明度 源代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>多物体运动</title> <style> div{ width:200px; height:100px; background:yellow; margin-bottom: 20px; filte

#笔记#JavaScript进阶篇一

#JavaScript进阶篇 http://www.imooc.com/learn/10 #认识DOM #window对象 浏览器窗口可视区域监测—— 在不同浏览器(PC)都实用的 JavaScript 方案: var w= document.documentElement.clientWidth || document.body.clientWidth; var h= document.documentElement.clientHeight || document.body.clientHe

JavaScript进阶 - 第8章 浏览器对象

第8章 浏览器对象 8-1 window对象 window对象是BOM的核心,window对象指当前的浏览器窗口. window对象方法: 注意:在JavaScript基础篇中,已讲解了部分属性,window对象重点讲解计时器. 任务 在右边编辑器script标签内补充代码,弹出对话框"欢迎来到慕课网". 定义一个函数,实现打开一个网页,宽为600,高为400. 当点击"点击我,打开新窗口"按钮时,在打开网页. 如果忘记了,可以查看JavaScript基础篇. 代码

JavaScript进阶 - 第6章 事件响应,让网页交互

6-1什么是事件 JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用户单击按钮或者提交表单数据时,就发生一个鼠标单击(onclick)事件,需要浏览器做出处理,返回给用户一个结果. 主要事件表: 6-2鼠标单击事件( onclick ) onclick是鼠标单击事件,当在网页上单击鼠标时,就会发生该事件.同时onclick事件调用的程序块就会被执行,通常与按钮一起使