1.1 数 组

1. 数组           看电影    电影院  座位

大的变量     里面可以放很多的值

var  arr = [1,3,57];

var ar = new Array();    new object();   new Date()

var txt =  [“宋江”,”张飞”] ;

使用数组:     数组名[索引号]     txt[1]    ==  张飞

txt.length;     属性

遍历数组:

for(var i=0;i<txt.length;i++){ console.log( txt[i] )}

txt[i]  txt  数组

1.2 两个小循环

循环   for(初始化; 条件; 增量){}

while()  当       do {}  while()

while(条件)  { 语句 }

var j = 1;
while(j<=100)
{
    sum1+=j;
    j++;
}
console.log(sum1);

do while  至少执行一次     while 不一定

1.3 多分支语句 switch

switch  跟 if else if  else if else   几乎一样的  但是switch效率更好。

作用其实就是 : 多选1     从多个里面选1个 。

语法格式:

switch(参数)

{

case 参数1:

语句;

break;    退出的意思

case 参数2:

语句;

break;    退出的意思

........

default:  默认的

语句;

}

<script>
    window.onload = function(){

        //获取元素
        var txt = document.getElementById("txt");
        var btn = document.getElementById("btn");
        btn.onclick = function(){
            var val = txt.value;
            switch(val)
            {
                case "苹果":
                    alert("苹果的价格是: 5元");
                    break;
                case "香蕉":
                    alert("香蕉的价格是: 2元");
                    break;
                case "梨":
                    alert("梨的价格是: 1.5元");
                    break;
                case "大白菜":
                    alert("大白菜的价格是: 9毛");
                    break;
                default:
                    alert("今天没进货");
            }
        }
    }
</script>

1.4   下拉菜单的事件  onchange

sele.onchange = function(){}

当改变的时候  事件

<script>
    window.onload = function(){
        var sele = document.getElementById("sele");
        sele.onchange = function(){
           // alert(this.value);
            switch(this.value)
            {
                case "1":
                    document.body.style.backgroundImage = "url(images/chun1.jpg)";
                    break;
                case "2":
                    document.body.style.backgroundImage = "url(images/xia1.jpg)";
                    break;
                case "3":
                    document.body.style.backgroundImage = "url(images/qiu1.jpg)";
                    break;
                case "4":
                    document.body.style.backgroundImage = "url(images/dong1.jpg)";
                    break;
            }
        }

    }
</script>

效果 :

1.5 数组常用方法

我们经常要对数组进行操作,可能追加,也可能删除 等等,何如?

1.5.1 添加 数组

var arr = [1,3,5];

我们想要 吧 7  这个数字 放到  这个数组的后面

我想要 [1,3,5,7];

1. push()   ★★★★★  后面推进去

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

push 推进去   放

var arr =[1,3,5]   →  arr.push(7)  → 结果变成 :  [1,3,5,7];

2. unshift()    从数组的前面放入

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度

var arr = [1,3,5]  →  arr.unshift(0) →  结果变成 [0,1,3,5]

注意:

var dom = [1,3,5];
console.log(dom.push(7));  // 返回的是 数组的长度  4

1.5.2 删除数组内容

1. pop()   删除最后一个元素

pop()  移除最后一个元素

返回值 是 返回最后一个值

var  arr = [1,3,5]   →  arr.pop()  →  结果   [1,3]

2. shift()  删除第一个元素

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值

var  arr = [1,3,5]   →  arr.shift()  →  结果   [3,5]

1.5.3 连接两个数组

concat()

该方法用于连接两个或多个数组。它不会改变现有的数组,而仅仅会返回被连接数组的一个副本

var aa = [1,3,5];  var bb = [“a”,”b”,”c”];

aa.concat(bb);     结果:  [1,3,5,“a”,”b”,”c”];

1.5.4 join() 把数组转换为字符串

join()

作用是将数组各个元素是通过指定的分隔符进行连接成为一个字符串。

语法

arrayObject.join(separator)

数组名.join(符号)

数组转换为字符串

参数 separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

var arr = [1,2,3];

console.log(arr.join(“-”))    结果就是:  1-2-3    字符串

1.5.5 把字符串转换为数组  split()

join   <=>   split

split() 方法用于把一个字符串分割成字符串数组

语法

stringObject.split(separator,howmany)

参数 separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

howmany 可选。该参数可指定返回的数组的最大长度

1.6 DOM (重点)

我们js 有三部分组成的?

ECMAscript       DOM      BOM

核心(ECMAScript)欧洲计算机制造商协会

描述了JS的语法和基本对象。   var aa   var AA   不一样

文档对象模型(DOM)  学习的重点

处理网页内容的方法和接口

浏览器对象模型(BOM)    了解一下

与浏览器交互的方法和接口

window.alert()  很大的兼容问题

1.6.1 DOM 定义

DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构。

目的其实就是为了能让js操作html元素而制定的一个规范。

DOM 树

1.6.2 节点

标签   标记    元素    节点

由结构图中我们可以看到,整个文档就是一个文档节点。

而每一个HMTL标签都是一个元素节点。

标签中的文字则是文字节点。

标签的属性是属性节点。

一切都是节点……

1.6.3 访问节点  

我们学过几个访问节点 :

getElementById()   id 访问节点

getElementsByTagName()    标签访问节点

getElementsByClassName()   类名    有兼容性问题

主流浏览器支持     ie 67 8  不认识

怎么办? 我们自己封装自己的 类 。

1.6.4 封装自己class类  

原理: (核心)

我们要取出所有的盒子, 利用遍历的方法 , 通过每一个盒子的className 来判断。  如果相等就留下。

<script>
    window.onload = function(){
       //封装自己class类名
        function getClass(classname){
            //如果浏览器支持,则直接返回
            if(document.getElementsByClassName)
            {
                return document.getElementsByClassName(classname);
            }
            // 不支持的 浏览器
            var arr = []; // 用于存放满足的数组
            var dom = document.getElementsByTagName("*");
            //alert(dom.length);
            for(var i=0;i<dom.length;i++)
            {
                if(dom[i].className == classname)
                {
                    arr.push(dom[i]);
                }
            }
            return arr;
        }
        console.log(getClass("demo").length);
    }
</script>

结束,分割版本

1.7 判断真假

我们用条件语句来判断5大数据类型中的真假;

数据

结论

数字类型

所有数字都是真,0是假

字符串

所有字符串都是真,’ ’串是假

对象

所有对象都是真,null是假

未定义

undefined是假,没有真

1.8 访问关系 

各个节点的相互关系

1.8.1  父节点 

父 :  parentNode         亲的  一层

<script>
    window.onload = function(){
        var x = document.getElementById("x");
        x.onclick = function(){
            this.parentNode.style.display = "none";
            // 关掉的是他的 父亲
        }
    }
</script>

1.8.2 兄弟节点

nextSibling  下一个兄弟    亲的       ie 678 认识

nextElementSibling   其他浏览器认识的

previousSibling   同理  上一个兄弟

previousElementSibling

我们想要兼容    我们可以合写      ||      或者

var div = one.nextElementSibling || one.nextSibling;
div.style.backgroundColor = "red";

必须先写 正常浏览器  后写  ie678

1.8.3  子节点 

firstChild    第一个孩子  ie678

firstElementChild  第一个孩子   正常浏览器

var one.firstElementChild || one.firstChild;

lastChild

lastElementChild

1.8.4 孩子节点

childNodes    选出全部的孩子

childNodes:它是标准属性,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本节点     (嫡出)

火狐 谷歌等高本版会把换行也看做是子节点

利用  nodeType == 1   时才是元素节点     来获取元素节点

标签  元素

children   重要  选取所有的孩子 (只有元素节点)

这个更好 跟喜欢它  。 (庶出)

ie 678  包含 注释节点     这个要避免开。

1.9 dom 的节点操作 

新建节点   插入节点   删除节点   克隆节点 等等

1.9.1  创建节点 

var div = document.creatElement(“li”);

上面的意思就是 生成一个新的  li 标签

1.9.2 插入节点 

1.  appendChild();    添加孩子     append 添加的意思

意思:  添加孩子   放到盒子的 最后面。

2. insertBefore(插入的节点,参照节点)   子节点  添加孩子

写满两个参数

demo.insertBefore(test,childrens[0]);

放到了第一个孩子的前面

如果第二个参数  为 null  则 默认这新生成的盒子放到最后面。

demo.insertBefore(test,null);

1.9.3   移除节点

removeChild()    孩子节点

var da = document.getElementById("xiongda");
demo.removeChild(da);

1.9.4 克隆节点

cloneNode();

复制节点

括号里面可以跟参数  , 如果 里面是 true  深层复制, 除了复制本盒子,还复制子节点

如果为 false  浅层复制   只复制   本节点  不复制 子节点。

JS原生第三篇 (帅哥)的更多相关文章

  1. JS原生第八篇 (帅哥)

    1.1 复习     1. clientX          clientWidth   可视区域的宽度 clientWidth     width  +  padding offsetWidth   ...

  2. JS原生第六篇 (帅哥)

    复习 按钮不可用    disabled =  "disabled"  ||  true setTimeout   只执行一次    setInterval  执行很多次 递归调用 ...

  3. JS原生第七篇 (帅哥)

    1.1 复习 offset   自己的 偏移 offsetWidth    得到自己的宽度 offsetHeight 构成 :   width  +   padding  +  border div ...

  4. JS原生第五篇 (帅哥)

    1.1 节点 1. 节点        网页是有很多的节点组成的  . 元素节点   指的是 :  标签     li  span 文本节点      属性节点 父子兄弟    父    parent ...

  5. JS原生第四篇 (帅哥)

      1.1  1. 循环 for(初始化; 退出条件; 增量)  {  } while(退出条件) {     } do {  语句 }  while(退出条件) 2. switch( )   多选1 ...

  6. JS原生基础终结篇 (帅哥)

    闭包 基础    面向对象基础 1.1 闭包 在程序语言中,所谓闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落.这些外部执行域的非 ...

  7. JS数据结构第三篇---双向链表和循环链表之约瑟夫问题

    一.双向链表 在上文<JS数据结构第二篇---链表>中描述的是单向链表.单向链表是指每个节点都存有指向下一个节点的地址,双向链表则是在单向链表的基础上,给每个节点增加一个指向上一个节点的地 ...

  8. 三篇文章带你极速入门php(三)之php原生实现登陆注册

    看下成果 ps:纯天然h5,绝不添加任何添加剂(css)以及化学成分(js)(<( ̄ ﹌  ̄)我就是喜欢纯天然,不接受任何反驳) 关于本文 用原生的php和html做了一个登陆注册,大概是可以窥 ...

  9. Node.js之路【第三篇】NodeJS异步实现

    NodeJS异步实现 Node.js异步编程的直接体现就是回调,它依托于回调来实现,但不能说使用了回调他就是异步了 回调函数在完成任务后就会被调用,Node使用了大量的回调函数,Node所有的API都 ...

随机推荐

  1. NodeJs之log4js

    log4js log4js是一个管理,记录日志的工具. 其实与morgan的作用类似. 安装 npm install -g log4js log4js的6个日志级别 分别是:trace(蓝色).deb ...

  2. [译]ZOOKEEPER RECIPES-Leader Election

    选主 使用ZooKeeper选主的一个简单方法是,在创建znode时使用Sequence和Ephemeral标志.主要思想是,使用一个znode,比如"/election",每个客 ...

  3. WebForm获取GET或者POST参数到实体的转换,ADO.NET数据集自动转换实体

    最近在修改维护以前的webform项目(维护别人开发的.....)整个aspx没有用到任何的控件,这个我也比较喜欢不用控件所以在提交信息的时候需要自己手动的去Request.QueryString[] ...

  4. [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程

    怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html  ...

  5. RabbitMq应用一

    RabbitMq应用一 RabbitMQ的具体概念,百度百科一下,我这里说一下我的理解,如果有少或者不对的地方,欢迎纠正和补充. 一个项目架构,小的时候,一般都是传统的单一网站系统,或者项目,三层架构 ...

  6. 在centos7中添加一个新用户,并授权

    前言 笔记本装了一个centos,想要让别人也可以登录访问,用自己的账号确实不太好,于是准备新建一个用户给他. 创建新用户 创建一个用户名为:zhangbiao [root@localhost ~]# ...

  7. ASP.NET Core 中文文档目录

    翻译计划 五月中旬 .NET Core RC2 如期发布,我们遂决定翻译 ASP.NET Core 文档.我们在 何镇汐先生. 悲梦先生. 张仁建先生和 雷欧纳德先生的群中发布了翻译计划招募信息,并召 ...

  8. npm 使用小结

    本文内容基于 npm 4.0.5 概述 npm (node package manager),即 node 包管理器.这里的 node 包就是指各种 javascript 库. npm 是随同 Nod ...

  9. GJM : C#设计模式(1)——单例模式

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  10. 使用git进行源代码管理

    git是一款非常流行的分布式版本控制系统,使用Local Repository追踪代码的修改,通过Push和Pull操作,将代码changes提交到Remote Repository,或从Remote ...