美文网首页
JS学习笔记基础部分

JS学习笔记基础部分

作者: 田心今心九日 | 来源:发表于2017-09-12 16:58 被阅读9次

    整理了下之前JS的学习笔记,基础部分的知识。
    1.className
    设置标签的css类的时候不能直接使用class,而是className。

    2.设置元素属性的方法
    一种是使用 .
    一种是使用中括号,使用变量设置css属性值的时候,不能直接写成div1.style.name,应该写成div1.style[name],name是个变量,例如:div1.style[‘name’],div1.style.height,div1.style.width,变量不用加引号,加引号就是字符串了,例如:div1.style[‘width’]是不对的。

    3.arguments不定参,参数的个数不固定,是个数组,通过循环操作数组中的参数。
    写到参数里的函数调用不需要写括号,例如:function show(){} btn.onclick=show;

    4.js中的style只能操作行间样式,不能操作非行间样式。
    js中使用currentStyle来获取非行间样式,比如获取<head>标签中的css样式。
    currentStyle只支持IE浏览器,getComputedStyle支持火狐、谷歌、IE9以上浏览器,不同的浏览器内核使用不同的属性。
    alert(getComputedStyle(oDiv,false).width); 有两个参数,其中oDiv就是要获取样式的那个元素,第二个参数随便填。
    if(undefined)返回的是true?

    5.isNaN(参数) 函数用于检查其参数是否是非数字值。
    typeof(参数) 函数用于返回其参数是什么数据类型。js中一般数据类型有number、string、boolean、function、object、undefined。

    6.css中有复合样式(例如:background、border),单一样式(width、height、position)。取背景颜色的时候用backgroundColor。

    7.数组
    var arr1 = [1,2,3,4,5];
    var arr2 = new Array(,6,7,8,9,0);
    数组中的length既可以获取,又可以设置。(例如1:arr1.length=3;),(例如2:快速清空数组的方法,arr1.length=0;)。
    数组使用原则:数组中应该只存一种类型的变量。
    数组的操作1:
    尾部添加:arr.push(4); 往数组的尾部添加一个元素。
    尾部删除:arr.pop(); 删除数组的尾部的一个元素。
    头部添加:arr.unshift(6); 往数组的头部添加一个元素。
    头部删除:arr.shift(); 删除数组的第一个元素。
    往数组的中间删除元素: arr.splice(2,3); //删除 splice(起点,长度);
    往数组的中间插入元素: arr.splice(2,0,’a,’b’,’c’); //插入 splice(起点,长度,元素……);
    替换操作:arr.splice(2,2,’a’,’b’);
    splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。
    splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
    如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
    提取数组中的元素或者字符串:
    array.slice(start, end)
    slice() 方法可从已有的数组中返回选定的元素。
    slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。slice() 方法不会改变原始数组。
    splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
    数组的操作2:
    数组拼接:arr1.concat(arr2); 结果是:1,2,3,4,5,6,7,8,9,0 或者arr2.concat(arr1);换下位置
    concat(数组2) 连接两个数组
    将数组拼接成字符串:var str = arr1.join(‘-’); 结果是:1-2-3-4-5
    join(分隔符) 用分隔符,组合数组元素,生成字符串
    将字符串分割成数组:var arr3 = str.split(‘-’); 结果是:[1,2,3,4,5];
    将数组中的元素排序:arr.sort() 当数组中都是字符串的时候按照首字母进行排序,当数组中都是数字的时候(再不转换类型的情况下,也是先按照字符串排序)
    arr.sort([函数]) 比如:arr.sort(function (n1,n2){return n1-n2;})

    8.定时器的作用
    开启定时器
    setInterval 间隔型
    setInterval(函数,时间); 多长时间执行一次函数,时间参数为毫秒。例如:setInterval(show, 1000);
    setTimeout 延时型
    停止定时器
    clearInterval
    clearTimeout
    获取系统时间
    var oDate = new Date();
    获取时:oDate.getHours();
    获取分:oDate.getMinutes();
    获取秒:oDate.getSeconds();
    字符串和数字相加返回字符串
    str.charAt(字符串中的索引),返回字符串中某个下标对应的字符。兼容各个版本浏览器。
    获取年:getFullYear();
    获取月:getMonth()+1; (注意:获取的月份比实际的月份少1,所以在使用的时候需要加个1)。
    获取日:getDate();
    获取星期几:getDay(); (注意:星期是从0开始的,0,1,2,3,4,5,6,代表星期日开始,到星期六)。
    可以定义一个变量timer用来保存定时器,不用的时候清除掉即可。

    9.元素的边距
    offsetLeft/offsetTop,元素的左边距,上边距 (返回元素的水平偏移位置 / 返回元素的垂直偏移位置)
    offsetWidth/offsetHeight,返回元素的宽度 / 返回元素的高度。
    相对定位:relative
    如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。
    注意,在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。
    绝对定位:absolute
    绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。
    绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。
    对于定位的主要问题是要记住每种定位的意义。所以,现在让我们复习一下学过的知识吧:相对定位是“相对于”元素在文档中的初始位置,而绝对定位是“相对于”最近的已定位祖先元素,如果不存在已定位的祖先元素,那么“相对于”最初的包含块。
    注释:根据用户代理的不同,最初的包含块可能是画布或 HTML 元素。
    提示:因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其它元素。可以通过设置 z-index 属性来控制这些框的堆放次序。

    10.DOM基础
    元素.childNodes.length (适用于IE6-8)。
    通过判断节点类型来对元素进行操作。
    元素.childNodes[i].nodeType是节点的类型。
    nodeType==1 ——》 元素节点,元素就是标签。
    nodeType==3 ——》 文本节点,文本就是普通的前后没有标签包含的文本。
    另外一个好用的是 元素.children.length,都兼容。
    parentNode元素的父节点。
    offsetParent根据元素样式的不同,效果不同,比如当前元素的位置依赖于某个元素的位置。
    首尾子节点:
    firstChild、lastChild用于获取首尾子节点,只兼容IE6-8。
    firstElementChild、lastElementChild用于获取首尾子节点,只兼容高版本浏览器。
    解决兼容性的方法是先判断节点是否存在,例如:if(oUl.firstElementChild){//高版本浏览器}else{//IE6-8}
    兄弟节点:
    nextSibling、previousSibling,用于获取前后子节点,只兼容IE6-8。
    nextElementSibling、previousElementSibling用于获取前后子节点,只兼容高版本浏览器。
    操作元素的属性:
    获取元素属性:getAttribute(名称)
    设置元素属性:setAttribute(名称,值)
    删除元素属性:removeAttribute(名称)
    使用className进行选择元素
    var aEle=oParent.getElementsByTagName(‘*’);使用通配符获取某个元素下包含的所有的元素。

    11.DOM操作应用
    创建DOM元素
    document.createElement(标签名) 创建一个节点。
    父级.appendChild(节点) 追加一个节点。
    例如:在ul中插入li,父级.appendChild(子节点)
    插入DOM元素
    insertBefore(节点,原有节点) 在已有元素前插入元素
    例如:倒序插入li,父级.insertBefore(子节点,在谁之前)。
    删除DOM元素
    removeChild(节点) 删除一个节点
    例如:删除li,父级.removeChild(子节点)
    元素.innerHTML给元素添加内容
    元素.innerText给元素添加内容,严格注意大小写。
    文档碎片
    文档碎片可以提高DOM操作性能(理论上),比如在:IE6、IE7浏览器上提升性能效果好。
    var oFrag=document.createDocumentFragment();
    相当于往袋子里装东西,装完东西把袋子再提袋子。

    12.DOM操作高级应用
    oTable.getElementsByTagName(‘tbody’)[0].getElementsByTagName(’tr’)[1].getElementsByTagName(‘td’)[1].innerHTML
    上边的语句相当于oTable.tBodies[0].rows[1].cells[1].innerHTML
    oUl.appendChild(oLi)是先把元素从原有父级上删除,再添加到新的父级里。
    oTable.search(arr[j] != -1);说明搜索到了,若等于-1则说明没有搜索到对应的字符串。
    字符串做比较的时候,可以通过把两个字符串同时转换为大写或者小写,就可以实现比较时忽略大小写。
    sText.split(‘ ’)用于把字符串以某个字符分割成数组。
    元素集合类型的数组不是真正的数组,只能使用length,方括号方法,不能使用sort方法。
    定义和用法
    sort() 方法用于对数组的元素进行排序。
    语法
    arrayObject.sort(sortby)
    sortby可选。规定排序顺序。必须是函数。
    返回值
    对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
    说明
    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
    如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
    1)若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    2)若 a 等于 b,则返回 0。
    3)若 a 大于 b,则返回一个大于 0 的值。
    function sortNumber(a, b)
    {
    //正序排序,从小到大
    return a - b;
    //倒序排序,从大到小
    return b - a;
    }

    1. 字符串去重
      function quchong2(str){
      var newStr="";
      for(var i=0;i<str.length;i++){
      if(newStr.indexOf(str[i])==-1){
      newStr+=str[i];
      }
      }
      return newStr;
      }

    相关文章

      网友评论

          本文标题:JS学习笔记基础部分

          本文链接:https://www.haomeiwen.com/subject/plocsxtx.html