getElementsByTagName()

getElementsByTagName() 方法可返回带有指定标签名的对象的集合。

getElementsByClassName()
返回文档中所有指定类名的元素集合,作为 NodeList 对象。
自定义 getElementsByClassName 方法
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript">
    window.onload =function (argument) {
      var oUl1 = document.getElementById('ul1');
      console.info(oUl1)
      var aLi = getElementsByClassName(oUl1,'li','box');

      //设置 aLi 背景色
      for (var i = 0; i < aLi.length; i++) {
        aLi[i].style.background = 'red';
      }
      alert(aLi.length);


  //自定义getElementsByClassName方法
  function getElementsByClassName(parent,tagName,className){

    var aEls = parent.getElementsByTagName(tagName);
    var arr = [];

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

      var aClassName = aEls[i].className.split(' ');

      console.log(aClassName.length);

      for (var j = 0; j < aClassName.length; j++) {

        if (aClassName[j] == className) {
          arr.push(aEls[i]);
          //class="box box" 出于各种原因,出现这种情况
          //用break只向 arr 添加第1个 box
           break;
        }
      }


      // if (aEls[i].className == className) {
      //  arr.push(aEls[i]);
      // }
    }
    return arr;
  }


}
</script></head>
<body>
  <ul id ="ul1">
    <li>1111111</li>
    <li class="box box">2222222</li>
    <li class="box1">3333333</li>
    <li class="box box2">4444444</li>
  </ul>
    <ul id="ul2">
    <li>1111111</li>
    <li class="box box">2222222</li>
    <li class="box1">3333333</li>
    <li class="box box2">4444444</li>
  </ul>
  <p class="box"></p>
</body>
</html> 

1.1
表格应用

   tHead :表格头
    tBodies:表格正文   //数组
    tFoot:表格尾    
    rows:行                //数组
    cells :列              //数组
  <table id="tab1" width="80%" border="1px">
    <thead>

    <tr>      
    <th>编号</th>
      <th>Name</th>
      <th>Sex</th>
      <th>操作</th>        
    </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>Li Lei</td>
        <td>男</td>
        <td>
          <a href="javascript:;">删除</a>
        </td>
      </tr>
      <tr>
        <td>2</td>
        <td>Han MeiMei</td>
        <td>女</td>
        <td>
          <a href="javascript:;">删除</a>
        </td>
      </tr>
    </tbody>
  </table> 
JS方法
      /*
        tHead     :表格头
        tBodies   :表格正文
        tFoot   :表格尾
          rows  :行
          cells   :列
        */
        console.log("tHead:");
        console.log(oTable.tHead);   //<tHead>..</tHead>
        console.log("tBodies:");
        console.log(oTable.tBodies);  //[tbody]
        console.log("tFoot:");
        console.log(oTable.tFoot);  //null
        console.log("rows:");
        console.log(oTable.rows); //[tr,tr,tr]
        console.log("cells:");
        console.log(oTable.cells);  // undefined

      //console.info(oTable.children[1].children[1].children[1].innerHTML) //Han MeiMei
        console.info(oTable.tBodies[0].rows[1].cells[1].innerHTML)  //Han MeiMei 
1.2
示例

表格的创建
数据添加
隔行变色
删除一行
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
<script type="text/javascript">
  window.onload =  function (argument) {
    var data = [
    {id:1,username:'leo',sex:'男'},
    {id:2,username:'xiaomei',sex:'女'},
    {id:3,username:'wangliang',sex:'男'},
    {id:4,username:'telly',sex:'女'}
    ];

    var oTab = document.getElementById('tab1');
    var oTbody = oTab.tBodies[0];


    for (var i = 0; i < data.length; i++) {
      
      var oTr = document.createElement('tr');

      //编号
      var oTd  =document.createElement('td');
      oTd.innerHTML = data[i].id;
      oTr.appendChild(oTd);

      //姓名
       oTd  =document.createElement('td');
       oTd.innerHTML = data[i].username;
       oTr.appendChild(oTd);

       //性别
       oTd  =document.createElement('td');
       oTd.innerHTML = data[i].sex;
       oTr.appendChild(oTd);

       //删除
       oTd  =document.createElement('td');
       var oA = document.createElement('a');
       oA.innerHTML ='删除';
       oA.href ='javascript:;';
       
       oA.onclick =function (){     
      //删除一行
      oTbody.removeChild(this.parentNode.parentNode);

        //重新渲染
        for (var i = 0; i < oTbody.rows.length; i++) {
          if (i%2) {
            oTbody.rows[i].style.background="gray";
          }else{
            oTbody.rows[i].style.background="white";
          }
        }
      };
      oTd.appendChild(oA);
      oTr.appendChild(oTd);

      /*
       * 隔行变色
       */
       if (i%2) {
        oTr.style.background="gray";
       }

      oTbody.appendChild(oTr);
    }
  }
</script>
</head>
<body>
  <table id="tab1" width="80%" border="1px">
    <thead>
      <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
    </tbody>
  </table>
</body>
</html> 
2.1
表单

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript">
    window.onload = function(argument) {
      var oForm = document.getElementById('form1');

      /*
       * 查找表单下的控件(使用name)
       * 表单.控件name
       * alert(oForm.text1.value)  //文本框
       */

      /*
       *【onchange】 :当值发生改变的时候触发
       *  text : 当光标离开的时候如果内容有变化就触发 
       *  radio/checkbox: 标准下值变了就触发
       *      非标准下焦点离开的时候如果值变了就会触发
       */

      oForm.city.onchange = function() {
        //alert(this.value)
      }

      oForm.button.onclick = function() {

        //性别radio
        if (oForm.sex[0].checked) {
          console.log('性别:男');
        } else {
          console.log('性别:女');
        }

        //多选checkbox
        var content = "";
        for (var i = 0; i < oForm.checkbox.length; i++) {
          if (oForm.checkbox[i].checked) {
            content += oForm.checkbox[i].value + ' ';
          }
        }
        console.log(content);

        //地区select
        console.log(oForm.city.options[oForm.city.selectedIndex].value)
      }
    }
  </script>
</head>
<body>
  <form id="form1">
    <div>
      <input type="text" name="text1" value="文本框"></div>
    <div>
      <input type="radio" name="sex" value="男" checked>   
      <input type="radio" name="sex" value="女">女</div>
    <div>
      <input type="checkbox" name="checkbox" value="html">    
      html
      <input type="checkbox" name="checkbox" value="css">   
      css
      <input type="checkbox" name="checkbox" value="js">js</div>
    <div>
      <select name="city" id="mySelect">
        <option value="">请选择</option>
        <option value="北京">北京</option>
        <option value="重庆">重庆</option>
        <option value="上海">上海</option>
      </select>
    </div>
    <input type="button" value="提交" name="button">
  </form>
</body>
</html> 

JS中级 - 02:表单、表格的更多相关文章

  1. js动态控制表单表格

    js动态控制表单表格,这里操作只讲,添加一行,删除一行,删除某一行某一列. 直接放代码: <!DOCTYPE html> <html> <head> <met ...

  2. JS、jqueryie6浏览器下使用js无法提交表单的解决办法

    -----------------------JS.jqueryie6浏览器下使用js无法提交表单的解决办法---------------------------------------------- ...

  3. js/jquery/插件表单验证

    媳妇要学js,就收集一些资料给她. 1.js 表单验证 : http://hi.baidu.com/yanchao0901/item/161f563fb84ea5433075a1eb 2.jquery ...

  4. js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题

    js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...

  5. 通过JS模拟select表单,达到美化效果[demo][转]

    转自: http://www.cnblogs.com/dreamback/p/SelectorJS.html 通过JS模拟select表单,达到美化效果 Demo ------------------ ...

  6. JS 提交form表单

    源码实例一:javascript 页面加裁时自动提交表单Form表单:<form method="post" id="myform" action=&qu ...

  7. 通过JS模拟select表单,达到美化效果[demo]

    .m-form{background:#fff;padding:50px;font-family:12px/1.5 arial,\5b8b\4f53,sans-serif;} .m-form ul,. ...

  8. 表单验证—js循环所有表单验证

    [封装为表单验证的专用js,所有表单页面都可以调用] 1.表单 <form id="regForm" method="post" action=" ...

  9. js重置form表单

      CreateTime--2017年7月19日10:37:11Author:Marydon js重置form表单 需要使用的方法:reset() 示例: HTML部分 <form id=&qu ...

  10. js验证form表单示例

    js验证form表单示例 检测测试了js表单验证,无jQuery(简单的功能有时无需jQuery版本) js代码如下:   <script type="text/javascript& ...

随机推荐

  1. leetcode 86. Partition List

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...

  2. vs2012+qt5.2.0环境搭建

    1.安装vs2012: 2.下载Qt 5.2.0 for Windows 32-bit(VS 2012, 579 MB) 和 Visual Studio Add-in 1.2.2for Qt5 注意: ...

  3. OSI参考模型与TCP/IP协议模型

    OSI和TCP/IP都是为了计算机之间更好的互联的. 计算机网络是一个复杂的系统,比如两台计算机进行通信不仅仅只是有一条通信线就可以了. 还有很多的工作需要完成,例如: 如何知道对方计算机是否做好准备 ...

  4. bug-android之ActivityNotFoundException

    应用场景:用于安卓的短信发送功能 异常名称:Caused by: android.content.ActivityNotFoundException: No Activity found to han ...

  5. BZOJ 2574: [Poi1999]Store-Keeper

    Description 推箱子. \(n,m\leqslant 100\) Sol Tarjan+边双连通分量+BFS. 直接搜索的复杂度是 \(n^6\) 记录人的位置,箱子的位置和转移. 箱子的位 ...

  6. 51Nod 1766 树上的最远点对

    Description 一棵树,询问两个端点编号分别在在 \([a,b]\) 和 \([c,d]\) 两个区间中的最长链. Sol 线段树+ST表. 树上最长链可以合并,只需要合并两个区间最长链的两个 ...

  7. ubuntu15.10下编译安装wine1.8 rc4

    ubuntu15.10下编译安装wine1.8rc4 Wine (“Wine Is Not an Emulator” 的递归缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Li ...

  8. 2. Android系统启动流程

    1.启动加载完内核 2.执行init进程   ----> 设备初始化工作       a1. 读取inic.rc       a2. 启动Zygote进程 ----> 该进程是所有进程的孵 ...

  9. php中的钩子(hook插件机制)

    对"钩子"这个概念其实不熟悉,最近看到一个php框架中用到这种机制来扩展项目,所以大概来了解下. hook插件机制的基本思想: 在项目代码中,你认为要扩展(暂时不扩展)的地方放置一 ...

  10. [转]Tomcat----Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

    对于使用IDE开发的程序员来讲,并不是所有人都对自己用来吃饭的工具了如指掌.常在阴沟跑,哪能不翻船.为此我把自己使用Tomcat/Eclipse的一些经验教训整理了一下,会陆续的贴出来,也许会帮到和我 ...