JavaScript部分方法

1. -webkit-user-select:​ none这个属性是什么意思?

   不希望用户在你的网站上选择文本,无论是否是出于版权的原因,通常大家会有js来实现。另一个方案就是,将-webkit-user-select 和-moz-user-select 的值设为none。

注:请谨慎使用这个属性:因为大部分用户是来查看信息的,他们可以复制并存储下来以备将来之用,所以这种方法既无用也无效。如果你禁用了复制粘贴功能,用户还是可以通过查看源文件来获取到他们想要的内容。搞不懂这个属性为什么会被webkit和gecko支持。

2.input 使用小常识:

2-1. input text怎么去掉用户以前输入的下拉框的提示

<input type="text"  autocomplete="off" value="禁用提示" />

2-2. input 内容改变的触发事件

2-2-1. onchange 事件

onchange 事件会在域的内容改变时触发。支持的标签<input type="text">, <textarea>, <select>,<keygen>。
注意:在元素的值改变了且失去焦点时触发(两次的值一样不会触发)。
缺陷:通过js代码改变DOM的值不会触发,解决在js代码里改值了调用其change 的function() 或者调.change()方法。
<!--JS-->
<input type="text" id="gg" onchange="function()"/>

<!--JQuery-->
<script>
$("#gg").change(function(){});
</script>

2-2-2. onpropertychange  事件

onpropertychange会实时触发,会在元素的属性改变时就触发事件。当元素disable=true时不会触发。
缺陷:只在IE 下支持,其他浏览器不支持,用oninput来解决。
<!--JS-->
<input type="text" id="gg" onpropertychange="functionName()"/>

2-2-3. oninput  事件

oninput在<input>或<textarea>的值发生改变时触发,不需要等到元素失去焦点,是实时的。它是HTML5的事件,可用于检测文本类输入框的值。
缺陷:从脚本中修改值不会触发事件。从浏览器下拉提示框里选取值时不会触发。IE9 以下不支持,所以IE9以下可用onpropertychange 事件代替。
<!--JS-->
<input type="text" id="gg" oninput="functionName()"/>

<!--JQuery-->
<script>
  $("#gg").on('input propertychange',functionName);
</script>

2-2-4. addEventListener

addEventListener()用于向指定元素添加事件方法。使用removeEventListener()移除添加的事件方法。IE9以下不支持,用attachEvent代替。

语法: element.addEventListener(event, function, useCapture)

3. js怎么清空div里面的内容

//原生JS清空div内容
document.getElementById('bigDiv').innerHTML = "";

$('#bigDiv').html("");
//清空div内容  两种都可以

//JQuery清空div内容
$("#bigDiv").empty();

4. jquery如何获取某一个兄弟节点,不是全部的,是指定的兄弟节点 .(常用方法,小记一下笔记)

$('#id').siblings()       //当前元素所有的兄弟节点
$('#id').prev()           //当前元素前一个兄弟节点
$('#id').prevaAll()      //当前元素之前所有的兄弟节点
$('#id').next()           //当前元素之后第一个兄弟节点
$('#id').nextAll()       //当前元素之后所有的兄弟节点

5. JS数组添加元素的三种方法

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

  1)、语法:

 arr.push(newelement1,newelement2,....,newelementX)
参数描述
newelement1 必需。要添加到数组的第一个元素。
newelement2 可选。要添加到数组的第二个元素。
newelementX 可选。可添加多个元素。

  2)、返回值:

  把指定的值添加到数组后的新长度。

  3)、说明:

  push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。

  4)、实例:

    var arr = new Array(3)
    arr[0] = "ZhangQian"
    arr[1] = "LinFang"
    arr[2] = "HaiKun"

    console.log(arr);// ["ZhangQian","LinFang","HaiKun"]
    console.log(arr.push("C"));// 4
    console.log(arr);// ["ZhangQian","LinFang","HaiKun","C"]
    console.log(arr.push("A","B"));// 6
    console.log(arr);// ["ZhangQian","LinFang","HaiKun","A","B","C"]

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

  1)、语法:

 arr.unshift(newelement1,newelement2,....,newelementX)
参数描述
newelement1 必需。向数组添加的第一个元素。
newelement2 可选。向数组添加的第二个元素。
newelementX 可选。可添加若干个元素。

  2)、返回值:

  arrayObject 的新长度。

  3)、说明:

  unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。

  请注意,unshift() 方法不创建新的数组,而是直接修改原有的数组。

  4)、实例:

    var arr = new Array(3)

    arr[0] = "ZhangQian"

    arr[1] = "LinFang"

    arr[2] = "HaiKun"

    console.log(arr);// ["ZhangQian","LinFang","HaiKun"]
    console.log(arr.unshift("C"));// 4
    console.log(arr);// ["C","ZhangQian","LinFang","HaiKun"]
    console.log(arr.unshift("A","B"));// 6
    console.log(arr);// ["A","B","C","ZhangQian","LinFang","HaiKun"]

3、splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

  1)、语法:

  arrayObject.splice(index,howmany,item1,.....,itemX)

参数描述
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。

  2)、返回值:

类型描述
Array 包含被删除项目的新数组,如果有的话。

  3)、说明:

  splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。

  如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

  splice() 方法会直接对数组进行修改。

  4)、实例:

    var arr = ["A","ZhangQian","LinFang","HaiKun"];

    console.log(arr.splice(1,0,"B","C"));// []
    console.log(arr);// ["A","B","C","ZhangQian","LinFang","HaiKun"]
    console.log(arr.splice(1,2));// ["B","C"]
    console.log(arr);// ["A","ZhangQian","LinFang","HaiKun"]
    console.log(arr.splice(1,1,"D"));// ["ZhangQian"]
    console.log(arr);// ["A","D","LinFang","HaiKun"]

 

6. js数组合并(一个数组添加到另一个数组里面)方法

js定义两个数组。

var arrA=[1,2,3];

var arrB=[4,5,6];

要实现[1,2,3,4,5,6],如果直接arrA.push(arrB); 则arrB只会作为了arrA的一个元素。

1.使用concat() 方法合并或连接

concat(Array) 方法

concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
array1.concat([item1[, item2[, . . . [, itemN]]]])
说明
concat 方法返回一个 Array 对象,其中包含了 array1 和提供的任意其他项目的连接。
要加的项目(item1 … itemN)会按照从左到右的顺序添加到数组。如果某一项为数组,那么添加其内容到 array1 的末尾。如果该项目不是数组,就将其作为单个的数组元素添加到数组的末尾。
以下为从源数组复制元素到结果数组:
对于从正被连接到新数组的数组中复制的对象参数,复制后仍然指向相同的对象。不论新数组和源数组中哪一个有改变,都将引起另一个的改变。
对于连接到新数组的数值或字符串,只复制其值。一个数组中值有改变并不影响另一个数组中的值。

//concat()把两个或者多个数组链接在一起,但是不改变已经存在的数组
//而是返回一个链接之后的新数组
var a = [1,2,3];
a.concat([4,5]);
console.log(a);
//此处输出为 [1, 2, 3]

var a = [1,2,3];
a = a.concat([4,5]);
console.log(a);
//此处输出为 [1, 2, 3 ,4 ,5]

2.循环添加至其中一个数组中(此常见方法不具体描述)

7. 根据图片宽高计算图片比例

/*** 求最大公约数 ***/
function gcd(ab) {
  if(a b)
    return gcd(ba b);
  else
    return b;
}
 
w = 1280;
h = 720;
n = gcd(wh);

8. Object.keys方法之详解

一、语法

Object.keys(obj)

参数:要返回其枚举自身属性的对象

返回值:一个表示给定对象的所有可枚举属性的字符串数组

 

二、处理对象,返回可枚举的属性数组

let person = {a:"1",b:2,c:"3"}

Object.keys(person) // ["a", "b", "c"]

三、处理数组,返回索引值数组

let arr = [1,2,3,4,5,6]

Object.keys(arr) // ["0", "1", "2", "3", "4", "5"]

四、处理字符串,返回索引值数组

let str = "saasd字符串"

Object.keys(str) // ["0", "1", "2", "3", "4", "5", "6", "7"]

五、常用技巧

let person = {name:"张三",age:25,address:"深圳",getName:function(){}}

Object.keys(person).map((key)=>{

  person[key] // 获取到属性对应的值,做一些处理

}) 

六、Object.values()和Object.keys()是相反的操作,把一个对象的值转换为数组

 

posted @ 2018-05-25 10:46  雨夜看叶  阅读(169)  评论(0编辑  收藏  举报