`
yumo12
  • 浏览: 18521 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JS一起学06:数组操作、JSON、getElementsByClassName、select元素、onchange、Math对象、批量设置样式

    博客分类:
  • js
阅读更多
一、数组的相关操作
1. 定义
          (1)var arr=[1,'abc',function(){alert(3333);},[333,444]];
          (2)var arr=new Array(12,5,8,9);   如果只放一个数字,要设定length
          (3)[]的性能略高,因为代码短
2. 属性----length(既可以获取,又可以设置)---例子:快速清空数组
     var a=[1,2,3,4,5,6,];
     a.length=0;
     alert(a);
(1)如果设置的length多于数组的内容,按照实际内容多少赋给length
(2)只有数组能操作length。
(3)数组可以存任意类型的值(可以嵌套、添加,覆盖,清空),但应尽量只存一种数据
3. 添加删除元素
  (1)从尾部
       push(元素),从尾部添加-----------pop(元素),从尾部删除
  (2)从头部
        unshift(),从头部添加------------shift(),从头部删除
   arr.push(4);     arr.pop();     arr.shift();     arr.unshift(0);
数组的添加方法二:
var arr=[];    arr[0]=33;    arr[1]=44;
arr[arr.length]=55;
arr[arr.length]=66;
arr[arr.length]=77; //从后面添加
例:
var aLi=oUl1.children;
var arr=[];
for(var i=0;i<aLi.length;i++){
    if(aLi[i].className=='lishow'){
        arr[arr.length]=aLi[i];
    }
}
alert(arr.length);
arr[0].style.background='blue';
     (3)插入删除
            删除元素:splice(起点,长度)---------------arr.splice(2,3)
            插入元素:splice(起点,长度,插入的元素1,插入元素2,……)----也可用作替换元素
                              如果只插入元素,可将长度设置为0
                              插入值是在第一个参数前面
var arr=[1,2,3,4,5,6];
arr.splice(2,3);
arr.splice(2,6,'a','b','c','d');
alert(arr);
4. 排序----sort([比较函数]),字符串排序
    var a=['left','right','top'];    a.sort();    alert(a);
    数组排序可以用这个办法:
        var a=[3,101,99,417];
        a.sort(function(n1,n2){
               return n1-n2;
        });
        alert(a);
例三:
window.onload=function(){
    var arr=[-23,-452,0,4,6,123,734,1275,98,754];
    for(var i=0;i<arr.length;i++){
        var Min=arr[i];
        var ind=i;
        for(var j=i+1; j<arr.length;j++){
            if(arr[j]<Min){
                Min=arr[j];
                ind=j;
            }
        };
        var c=arr[i];
        arr[i]=arr[ind];
        arr[ind]=c;
    }
}
5. 转换
(1) concat(数组2)连接两个数组------------a.concat(b)
    var a=[1,2,3];
    var b=[4,5,6];
    alert(a.concat(b));
(2) join(分隔符)
    用分隔符组合数组元素,生成字符串
    字符串splice
var a=[1,2,3,4];    alert(a.join('-'));
(3)reverse():反数组
var str='what is your name';
var arr=str.split(' ');   -----字符串转成数组
arr.reverse();--------------数组反转
str=arr.join(' ');-----------连接,并赋给字符串
alert(str);
数组--->字符串:join
字符串--->数组:split
、JSON(对象字面量)
 1、什么是Json
    是一个对象,存储数据的一种格式
    var json{名称1:值1,名称2:值2,名称3:值3,……}
    {"name":"值1","age":"18","sex":"男"}
    加引号是标准写法。如果与后台交互,必须用标准写法
    alert(json.a);==alert(json['b']);
例子:
{"职位":"前端工程师", "年龄":"18", {大姐名字:小红,大姐职位:设计师,大姐年龄:23},{二姐名字:小花,二姐职位:java工程师,二姐年龄:28}}
 2、json标准写法
    var json={"a":"abc","b":"dddd"}   
    最后一个值结束后,不要加逗号
 3、Json和数组
                 下标            length                循环
   json       字符串          无             for/for in都可以            无序,for in时无法保证顺序              可以存任意类型的值
  数组        数字              有            只能用for in                                                                             同上
 4、Json和for in
    在js中,一般情况下,名称可以不加引号,而且兼容
    for(var i in json){
        alert(i);   //对应每个名称
        alert(json[i]);   //对应每个值
    }
例一:利用json设置样式(一)
window.onload=function(){
    var oBtn=document.getElementById('btn1');
    var oDiv=document.getElementById('div1');
    oBtn.onclick=function(){
        for(var i in json){
            oDiv.style[i]=json[i];
        }
    }
}
利用json设置样式(二)
window.onload=function(){
    var oBox=document.getElementById('box');
    oBox.onclick=function(){
        setStyle(oBox,{
                width:'200px',
                height:'300px',
                background:'red',
                fontSize:'40px'   //最后一个值结束后不加逗号
        }); 
    }
}
function setStyle(obj,json){
    for(var name in json){
        obj.style[name]=json[name];
    }
}
改版:
oBox.onclick=function(){
    this.style.cssText='width:200px;height:300px;background:red;font-size:40px'  //会覆盖原来所有的行间样式
}
利用json设置样式(三)
window.onload=function(){
    var oDiv=document.getElementById('div1');
    var json={width:'400px', height:'400px', background:'red'};
    setStyle(oDiv,'background','red');
}
function setStyle(){
    if(arguments.length==2){
        for(var i in arguments[1]){
            arguments[0].style[i]=arguments[1][i];
        }
    }else if(arguments.length==3){
        arguments[0].style[arguments[1]]=arguments[1][i];
    }
}
获取样式,老老实实用getStyle
三、getElementsByClassName获取元素
1. document.getElementsByClassName  通过class获取元素,不管层级。 IE678:对象不支持
2.解决兼容性问题的办法一
for(var i=0;i<aLi.length;i++){
    if(aLi[i].className='lishow'){
        aLi[i].style.background='blue';
    }
}
3. 函数封装
function getByClassName(oParent,sClass){
    var arr=[];
    var aEl=oParent.getElementsByTagName('*');   //获取oParent下的所有标签
    for(var i=0;i<aEl.length;i++){
        var arr=aEl[i].className.split(' ');
        if(findInArr(arr,name)){
            result.push(aEl[i]);
        }
    }
    return arr;
}
function findInArr(arr,name){
    for(var i=0;i<arr.length;i++){
        if(arr[i].className==name){
            return true;
        }
    }
    return false;
}
第二种封装方法:
function getByClassName(oParent,sClass){
    if(oParent.getElementsByClassName){ //原生的性能好。如果认识原生的这个函数,就用原生
        return oParent.getElementsByClassName(sClass);
    };
    var arr=[];
    var aEl=oParent.getElementsByTagName('*');
    for(var i=0;i<aEl.length;i++){
        if(aEl[i].className==sClass){
           arr[arr.length]=aEl[i];
        };
    };
    return arr;
};
第三种:
function getByClass(oParent,sClass){
     if(!sClass){//如果没有传第二个参数
          var sClass=oParent;
          oParent=document;
     };
     if(document.getElementsByClassName){
          return oParent.getElementsByClassName(sClass);
     };
     var arr=[ ];
     var aEl=oParent.getElementsByTagName('*');
     for(var i=0;i<aEl.length;i++){
          if(aEl[i].className==sClass){
               arr[arr.length]=aEl[i];
          };
     };
     return arr;
};
四、select元素
直接value属性:不兼容:没加value
1、selectedIndex---当前选项的下标
alert(oSe.options[oSe.selectedIndex].value);
alert(oSe.options[oSe.selectedIndex].text);
2、options:所有选项的数组
每一个选项都有两个属性:
(1)value
(2)text
oSe.potions[oSe.selectedIndex];
3、可设置length:oSe.options.length;
4、一个从没定义过的自定义属性-----undefined
     一个从没定义过的变量------报错
五、onchange(与onfocus、onblur比较)
oSe.onchange=function(){     }---------------下拉菜单发生变化时执行代码
如果用在文本框上,需要失去焦点时,才会触发,很少用于文本框
window.onload=function(){
    var oSe=document.getElementById('se');
    oSe.onchange=function(){
        alert(this.value);
    }
}
六、Math对象
1、取整
(1)Math.ceil();---->向上取整
(2)Math.floor();---->向下取整
(2)Math.round();--->四舍五入
2、绝对值---->Math.abs();
3、开平方---->Math.sqrt();
      幂---->Math.pow(a,b);----a的b次方
4、最大值---->Math.max(a,b,c);---->a、b、c中的最大值
      最小值---->Math.min(a,b,c);
七、批量设置样式
1、css Text------可以一次设置各种样式,但是如果操作行间样式时,会覆盖其他样式   oDiv.style.cssText
2、with-----乱,影响性能
3、className----推荐
 
【本课总结】
1、什么时候加括号,什么时候不加?
(1)函数加括号会立即执行, onclick=undefined
(2)findInArr();功能性函数要加括号,让它立即执行
2、为什么加分号?
每句话结束要加
3、arguments---获取参数数组
4、封闭空间---避免重名,函数里面的东西都是局部的
5、获取非行间样式
currentStyle[attr]   getComputedStyle(obj,false)[attr]   不能读取复合样式,不能设置样式
6、批量设置样式
(1)cssText不用,会覆盖其他行间样式
(2)with不用,太乱且影响性能
(3)传json,可以用
7、数组
(1)定义  new Array(1,2,3)   
(2)length:可读取、可赋值
(3)方法:push  pop   shift   unshift      concat   join  splice   reverse sort
8、字符串
indexOf  lastIndexOf    substring   split   toUpperCse   toLowerCase    charAt
9、select
value    selectedIndex    options   text  value  tion   
10、date
0  上个月最后一天
35   把多余天数自动计入下个月
11、Math
ceil   round   floor   abs  sqrt   pow   max   min    random
分享到:
评论

相关推荐

    头歌教学实践平台 Web前端开发基础 JavaScript学习手册十四:HTML DOM-文档元素的操作(二)

    通过这个方法,我们可以直接根据元素的ID找到它,并对其进行操作,例如改变其内容、样式或属性。例如,`document.getElementById('myElement').innerHTML = '新内容';`将改变ID为'myElement'的元素的内部HTML。 ...

    prototype1.5.1 英文版

    - **$A**:将类数组对象转换为真正的数组。 - **$F**:获取表单元素的值。 - **$H**:创建一个哈希对象(键值对集合)。 - **$R**:创建一个范围对象,用于处理一系列数字或字符串。 - **$w**:将字符串分割成单词...

    prototype-151-api

    - **each**:遍历数组中的每一个元素,并执行指定的操作。 - **first**:返回数组的第一个元素。 - **flatten**:扁平化数组,将多维数组转换为一维数组。 - **from**:创建数组。 - **indexOf**:查找数组中第一个...

    js方法大全,不错的

    JavaScript,简称JS,是Web开发中的重要脚本语言,用于实现客户端的动态效果和交互。本文将详述JavaScript中的一些核心方法,这些方法在实际开发中具有广泛的应用。 1. **数组方法** - `push()`: 在数组末尾添加...

    prototype

    例如,Prototype提供了如`$`, `$$`, `$A`, `$F`, `$H`, `$R`, `$w`, `Try.these`等实用函数,以及`document.getElementsByClassName`等扩展方法,极大地提高了JavaScript的可读性和效率。 #### 三、Prototype的API...

    Ajax4Download

    - **getStyle**:获取元素的样式属性。 - **getWidth**:获取元素的宽度。 - **hasClassName**:检查元素是否包含某个类名。 - **hide**:隐藏元素。 - **immediate**:立即执行的操作(此处文档似乎被截断了)。 ...

    javascript实例自学手册:486个实例电子版(包括例子)

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责实现客户端的交互效果,增强用户界面。作为“javascript实例自学手册”的一部分,这个压缩包包含486个实例,旨在帮助初学者通过实践来理解和...

    JavaScript常用术语中英文对照表.doc

    这份文档提供了一个JavaScript常用术语的中英文对照表,对于理解和学习JavaScript语言非常有帮助。下面将详细解释其中的一些关键概念: 1. **数组操作**: - `push`:向数组末尾添加一个或多个元素。 - `pop`:...

    JavaScript实现获取dom中class的方法

    本文主要介绍了如何使用JavaScript来获取DOM(文档对象模型)中具有特定class的DOM元素。在讲解的过程中,涉及到JavaScript操作DOM节点的一些基本技巧和方法,如使用`getElementsByClassName`和`...

    j2ee04:js02,dom模型,三种找对象的方法,两种设置样式的方法,隐藏显示,全选,qq列表,计算器

    本话题将深入探讨JavaScript(JS)的DOM(Document Object Model)模型,以及与之相关的对象查找、样式设置、元素隐藏显示、全选操作和模拟QQ列表、计算器的实现。 首先,DOM是HTML和XML文档的一种结构化表示,它...

    常用JavaScript函数 16 - 30(自我总结)

    JavaScript是Web开发中不可或缺的一部分,它是一种轻量级的脚本语言,主要应用于客户端的网页交互。这篇自我总结涵盖了JavaScript函数的16到30个常用知识点,旨在帮助开发者更好地理解和应用这些功能强大的工具。 1...

    〖手册〗JS的方法集

    2. `JSON.stringify()`: 将JavaScript对象转换为JSON字符串。 3. `Object.assign()`: 将源对象的属性复制到目标对象。 五、DOM操作方法 1. `getElementById()`: 根据ID获取HTML元素。 2. `getElementsByClassName()...

    javascript入门教程(共有8章pdf格式)

    JavaScript,一种广泛应用于Web开发的脚本语言,是学习网页动态功能实现的关键。这份"javascript入门教程"包含8个章节的PDF格式内容,旨在帮助初学者深入浅出地理解JavaScript的核心概念和技术。以下是对每个章节...

    JavaScript實例教程

    2. 节点操作:如getElementById、getElementsByClassName等,用于选取DOM元素。 3. 事件处理:addEventListener和removeEventListener用于绑定和移除事件监听器。 通过本教程,你将能够掌握JavaScript的基础知识,...

    Javascript高级教程

    - **Document对象的方法**:如getElementById()、getElementsByClassName()等,用于获取或操作页面中的元素。 #### 第6章:文本对象 - **文本对象属性**:如value、readonly、disabled等,控制文本框的状态和内容...

    JS操作DOM元素属性和方法大全

    **JS操作DOM元素属性和方法大全** 在JavaScript中,DOM(Document Object Model)是一种标准,用于表示HTML或XML文档的结构,并提供了与这些文档交互的方法。DOM是浏览器提供的一种接口,使得JavaScript能够读取、...

    JavaScript:DOM操作与事件处理

    ### JavaScript:DOM操作与事件处理 #### 一、DOM模型的基本概念 DOM,全称为**文档对象模型**(Document Object Model),是HTML和XML文档的标准API。它将文档表示为节点和对象的树形结构,使得开发人员可以通过...

    javascript 快速入门教程,javascript面向对象编程

    ### JavaScript 快速入门教程与面向对象编程 #### 一、概要 JavaScript 是一种广泛应用于网页开发中的脚本语言,具有轻量级、解释型等特点。它可以在客户端执行,无需服务器支持,使得网页能够更加动态和交互。 ##...

    JavaScript学习笔记

    - **反序列化**:将JSON字符串转换为JavaScript对象。 通过以上知识点的梳理,我们可以看出JavaScript不仅是一门强大的前端编程语言,还具备广泛的用途和技术深度,对于现代Web开发至关重要。理解这些基础知识将有...

    必会的JS实例(JS实战全集)

    JavaScript,简称JS,是网页开发中的重要脚本语言,它被广泛用于实现动态效果和交互功能。本资源“必会的JS实例(JS实战全集)”汇集了多个在网络开发中常用的JavaScript实战案例,旨在帮助开发者提升技能,掌握JS的...

Global site tag (gtag.js) - Google Analytics