JavaScript 笔记

Posted 好奇害死猫+1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 笔记相关的知识,希望对你有一定的参考价值。

1,alert();
  alert("提示信息"); 换行 + "\n"
2,prompt(); ----> 得到的是 string 类型, 可能返回 null 和 "" ;
  prompt("提示信息");
  prompt("提示信息","输入框默认信息");
3,confirm();
  confirm("确认信息?") //确定返回TRUE,取消返回FALSE


4,Java 和 javascript 变量命名
  1,Java有严格的数据类型约束 某数据类型的变量可以重复赋值,但是只能赋相同数据类型的值
  2,变量名

5,undefined 类型
  未定义 或 定义未赋值 和 null 值相等
  如 var num1 = undefined;
    var num2;
       num3=9;

6,parseInt(): 从前往后将数字转换为 int 类型 (如 99kdjg) ;如第一个位置不是 number 类型,直接舍弃,不转换; 小数部分直接取整
  Number() : 强制转换,必须是字符串数字


7,FALSE 情况: "" , 0 , undefined , null , NaN , false

8,一个"="是赋值,两个"="是判断值是否相同(不看数据类型),三个"==="是判断 值和类型 是否相等
  != 判断内容不相等 !==判断内容或类型不相等
  JS 中没有单 & 及 | ,如果写了代表位运算

9,JavaScript中没有方法重载的概念,如果有相同方法名的函数,后面的方法会覆盖之前的方法

10,location 的 href 和 replace 都可以实现页面跳转(一个是跳转,一个是替换地址栏,结果一样)
  <a href="javascript:location.href=‘http://www.baidu.com‘">百度一下</a>
  <a href="javascript:location.replace(‘https://www.baidu.com‘)">百度一下</a>

11, document.title 返回页面的标题

12,窗口的特征属性
  window.open( "弹出窗口的URL", "窗口的名称", "窗口特征" );
  function openSchedule(){
    open("schedule.html","调查表","height=380, width=450, toolbar=0 scrollbars=0, location=0, left=500px, top=100px");
  }

  height, width 窗口文档显示区的高度,宽度,以像素计
  left, top 窗口的X坐标,Y坐标,以像素计
  toolbar=yes|no|1|0 是否显示工具栏,默认yes
  scrollbars=yes|no|1|0 滚动条
  location=yes|no|1|0 地址栏
  status=yes|no|1|0 状态栏
  menubar=yes|no|1|0 菜单栏
  resizable=yes|no|1|0 是否可调节大小

13,  setTimeout ( "调用的函数名称", 等待的毫秒数 );
  setInterval ( "调用的函数名称", 间隔时间 );
    ===> 函数名称 加 引号

  clearTimeout( timer );
  clearInterval( timer );

14, <p id="numArea">数字:0</p>
  拿到 p 标签 方法
  ++> document.getElementById("numArea").innerHTML
  document.getElementsByTagName("p")[0].innerHTML

  <h1>10</h1>
  document.getElementsByTagName("h1")[0].innerHTML ==>返回 10
  document.getElementsByTagName("h1")[0].value ==> undefined
  document.getElementsByTagName("h1")[0] ===> [object HTMLHeadingElement]

15, var timer = new Date();
  toLocaleString() : 2017/4/14 上午10:42:25
  toLocaleDateString() : 2017/4/14
  toLocaleTimeString() : 上午10:42:25
  toDateString() : Fri Apr 14 2017

  ==>setInterval(showTime, 1000);

16,使用 window.open 和 window.openr 传值

1,父窗口传值给子窗口
function doOpen() {
  //找到当前窗口的输入框,拿到里面的值
  var txtValue = document.getElementById("txt").value;
  alert(txtValue);
  //添加打开新窗口的逻辑
  var child = open("child.html", null, "top=200,left=200,width=300,height=300");
  //找到子窗口
  //找到子窗口的输入框 ****===>传值给子窗口需等子窗口加载完毕,才能找到子窗口目标的value值
  child.onload = function() {
    var childTxt = child.document.getElementById("txt");
    console.log(childTxt);
  //给输入框赋值
    childTxt.value = txtValue;
  }
}
2,子窗口传值给父窗口
function doTrans() {
  //找到当前窗口的文本框。获取到里面的内容
  var txt = document.getElementById("txt");
  var txtValue = txt.value;
  //找到该窗口的创建者
  //找到创建者的文本框
  var parentTxt = opener.document.getElementById("txt");
  //给文本框赋值
  parentTxt.value = txtValue;
  //关闭当前窗口
  close();
}

17,DOM 操作节点
浏览器不忽略空白文本,需要使用兼容方式来获取 不忽略空格 || 忽略空格
  获取第一个节点
  oFirst = oParent.firstElementChild || oParent.firstChild ; (顺序不可换)
  获取最后一个节点
  oLast = oParent.lastElementChild || oParent.lastChild ;
  获取上一个节点
  oPre = oParent.previousElementSibling || oParent.previousSibling ;
  获取下一个节点
  oNext = oParent.nextElementSibling || oParent.nextSibling ;

  childNodes 也存在空白文档
  解决方法:1,去除空格
      2,拿到父元素,用父元素.getElementsByTagName("标签名")[index] 拿到

  nodeName 节点名称
  元素节点的 nodeName 是标签名称
  属性节点的 nodeName 是属性名称
  文本节点的 nodeName 永远是 #text
  文档节点的 nodeName 永远是 #document
  nodeValue 节点值
  对应文本节点, nodeValue 属性包含文本
  对应属性节点, nodeValue 属性包含属性值
  nodeType 节点类型
  元素 1, 属性 2, 文本 3, 注释 8, 文档 9

举个例子:
  <p id="pro">helloworld</p> --->注意:helloworld不是 <p>的节点值,是<p>的子节点,文本节点的值
  ==> nodeName : p
  nodeType : 1
  nodeValue : null
  ==>firstChild (文本节点)
  nodeName : #text
  nodeType : 3
  nodeValue : helloworld
18,创建新节点,使用 document

19,String 支持对字符串的处理
length 属性,字符串对象长度
方法
  charAt(index) 返回在指定位置的字符
  indexOf(str, index) 查找某个指定的字符串在字符串中首次出现的位置
  substring(index1, index2) 返回位于指定索引index1 和 index2之间的字符串,并且包括索引index1对应的字符不包括索引index2d对应的字符
  split(str) 将字符串分割为字符串数组
  toLowerCase() 把字符串转换为小写
  toUpperCase() 把字符串转换为大写

20,Date 操作日期和时间
  //使用数组来显示 星期几
  var weekdays = new Array(7);
  weekdays[0] = "星期日" ;
  weekdays[1] = "星期一" ;
  weekdays[2] = "星期二" ;
  weekdays[3] = "星期三" ;
  weekdays[4] = "星期四" ;
  weekdays[5] = "星期五" ;
  weekdays[6] = "星期六" ;
  var weekday = weekdays[ date.getDay() ];
  另: var month = (date.getMonth()+1) < 10 ? ( "0"+ (date.getMonth()+1) ) : (date.getMonth()+1);
    var hours = (date.getHours()%12) < 10 ? ("0" + date.getHours()%12 ) : (date.getHours()%12 ); //12小时制
    var apm = date.getHours() < 12 ? "AM" : "PM";

21,Array 用于在单独变量中存储一系列的值
  var 数组名称 = new Array(); //创建空数组
  var 数组名称 = new Array(size); //创建size个undefined成员的数组
  var 数组名称 = new Array( element0, element1, ... );
  循环读取 for-in

  var weekdays = new Array(7);
  weekdays[0] = "星期日" ;
  weekdays[1] = "星期一" ;
  weekdays[2] = "星期二" ;
  weekdays[3] = "星期三" ;
  weekdays[4] = "星期四" ;
  weekdays[5] = "星期五" ;
  weekdays[6] = "星期六" ;
  for (var str in weekdays ){
    document.write(weekdays[str] + "<br />" );
  }

二维数组
数组属性: length
数组方法: join() 把数组的所有元素通过分割符进行分割连接,拼接成一个字符串
  sort() 排序,默认按照字符的顺序排序,*对数字进行排序,不能直接调用,数字排序需传参,如 nums.sort( function(a, b){ return a-b; } );
  push() 向数组末尾添加一个或更多的元素,并返回新的长度

22,Math 数学操作
  ceil() 对数进行上舍入 如: Math.ceil(25.3); ==>26
  floor() 对数进行下舍入 如: Math.flor(25.6); ==>25
  round() 四舍五入
  random() 返回0~1之间的随机数 Math.random();
  ==> Math.ceil( Math.random()*100 ); //1~100整数

  var num =2.446242342;
  num = num.toFixed(2); // 输出结果为 2.45

  Math.round(total*100)/100; //保留小数点后两位

  ==>保留小数点两位,两种方法

23,动态改变页面元素
  1,使用 getElement系列方法获取元素
  2,通过属性改变样式
    1): DOM元素.style.样式属性 = "值"; 注意: 两个单词的中间杠去掉,第二个单词大写,如 backgroundColor = "red";
      DOM元素.style.display = "none" | "block";
    2): DOM元素.className = "类名称"; (设置一个类样式,赋值给DOM元素)
  ====>只能获得行内样式的style
  获得内部或外嵌样式
    IE浏览器使用:currentStyle
    Firefox浏览器:getComputedStyle()

24,表单验证
  1):获取表单元素的值
  2):根据业务规则
    利用String对象
    利用正则表达式
    所有表单元素通过后,才能提交表单
25,文本框对象
  属性 id
    value
  方法 blur() 移开焦点
    focus() 设置焦点,获得鼠标的光标
    select() 选取文本域中的内容
  事件 onblur 失去焦点,当光标离开某个文本框时触发
    onfocus 获得焦点,当光标进入某个文本框时触发
    onkeypress 某个键盘按键被按下时触发

**表单提交验证
  把每一个验证的方法放入数组,遍历数组每一个元素

funtion checkForm(){
  var arrs = [ "checkUserName()", "checkPwd()", "checkEmail()" ];
  var sum = 0;
  for ( var i=0; i<arrs.length; i++ ){
    if ( eval( arrs[i] ) ){    //eval( arrs[i] ) 把 arrs[i] 转成JS代码去执行,即遍历每一个验证的方法
      sum++
    }
  }
  return ( sum == arrs.length ) ? true : false ;
}

***** 获得指定table里 td 里 input 的 value.

for (var i=1; i<rowNums; i++){
  var input = tab.rows[i].cells[4].getElementsByTagName("input")[0].value;
}    //循环行数固定某一列input的值

26,正则表达式
创建语法
1):直接量
  /pattern/attributes
  如在字符串中对 ‘is‘ 进行全局搜索:
  var str = "Is this all there is?";
  var patt1 = /is/g ;
2):实例化 RegExp对象
  new RegExp(pattern,attributes);
  如在字符串中对 ‘is‘ 进行全局搜索:
  var str = "Is this all there is?";
  var patt1 = new RegExp("is", "g");
修饰符:
  i 对大小写不敏感
  g 执行全居匹配
  m 执行多行匹配
举个例子:
  方法一:var str = "Is this all there is?";
    str.replace( /is/gi,‘at‘ );
  方法二:var str = "Is this all there is?";
    var pa = new RegExp("is","gi");
  str.replace(pa,"at");
方括号
  [abc] 查找方括号之间的任何字符
  [^abc] 查找任何不在方括号之间的字符
  [0-9] 查找任何从0-9的数字
  [a-z] 查找任何从小写 a 到 小写 z 的字符
  [A-Z] 查找任何从大写 A 到 大写 Z 的字符
  [a-zA-Z] 查找任何字母 或[A-z]推荐[a-zA-Z],因为Z和a之间还有其他符号*
  [red|blue|green] 查找任何指定的选项
常用符号
  /.../ 代表一个模式的开始和结束
  ^ 匹配字符串的开始
  $ 匹配字符串的结束
  \s 任何空白字符
  \S 任何非空白字符
  \d 匹配一个数字字符,等价于[0-9]
  \D 除了数字之外的任何字符,等价于[^0-9]
  \w 匹配一个数字,下划线或字母符号,等价于[A-Za-z0-9_]
  . 除了换行符之外的任意符号
重复字符
  {n} 匹配前一项n次
  {n,} 匹配前一项n次,或者多余n次
  {n,m} 匹配前一项至少n次, 但是不能超过m次
  * 匹配前一项0次或多次,等价于{0,}
  + 匹配前一项1次或多次,等价于{1,}
  ? 匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}

示例
  ^-?[1-9]\\d*$ //整数
  ^?[1-9]\\d*$ //正整数
  ^-[1-9]\\d*$ //负整数
  ^([+-]?)\\d*\\.?\\d+$ //数字
  ^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$ //邮件
  /^\[email protected]\w+(\.[a-zA-Z]{2,3}){1,2}$/ //邮件
  ^\\d{6}$ //邮编
  ^(1)[0-9]{10}$ //手机

  [\u4E00-\u9FA5] //验证中文

  绝对不要在文档加载完成之后使用 document.write()。这会覆盖该文档。

  <tr>的父标签是<tbody>


27,addEventListener() 方法
  在用户点击按钮时触发监听事件:
    document.getElementById("myBtn").addEventListener("click", displayDate);
语法:
  element.addEventListener(event, function, useCapture);
  第一个参数是事件的类型 (如 "click" 或 "mousedown").
  第二个参数是事件触发后调用的函数。
  第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。
  注意:不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。

28,window.onload=productCount;
  window.onload 后直接接函数,不要括号

29,文本框选中事件要放在 改变样式前面
如:emailEle.select();
  showInfo("email", "register_input_Blur", "register_prompt_error", "电子邮件格式不正确,请重新输入");

 

点击切换
    $("div.top").toggle(
        function (){
            $(this).find(".iocn").removeClass("jia").addClass("jian");
            $(this).siblings(".content").show();
        },
        function (){
            $(this).find(".iocn").removeClass("jian").addClass("jia");
            $(this).siblings(".content").hide();
        });
    ===> $(this).find(".iocn") 子元素 Class 为 iocn 的
         $(this).siblings(".content") 兄弟元素 Class 为 content 的
jQuery tab页切换
    $("#tab-top ul li").click(function (){
        $(this).addClass("on");
        $(this).siblings("li").removeClass("on");
        $("div.content").hide();
        $("div.content").eq($(this).index()).show();
    });
//左右两边添加移除操作
    $("#add").click(function (){
        var $selected = $("#left option:selected");
        if ($selected.length != 0){
            $selected.appendTo($("#right"));
        }
    });
    $("#remove").click(function (){
        var $selected = $("#right option:selected");
        if ($selected.length != 0){
            $selected.appendTo($("#left"));
        }
    });
    //左右两边全部移动
    $("#allAdd").click(function (){
        var $selected = $("#left option");
        $selected.appendTo($("#right"));
    });
    $("#allRemove").click(function (){
        var $selected = $("#right option");
        $selected.appendTo($("#left"));
    });
jQuery全选
    HTML代码
    <table border="0" cellpadding="10" cellspacing="0">
        <tr><td><input type="checkbox" id="all"/
        <tr><td><input type="checkbox" name="member"/>
        <tr><td><input type="checkbox" name="member"/>
        <tr><td><input type="checkbox" name="member"/>
    </table>
    ------------------------------------------------------
    //全选
    $("#all").click(function() {
        $("input[name=‘member‘]").attr("checked",this.checked); ==>this.checked
    });
    var $members = $("input[name=‘member‘]");
    $members.click(function() {
        $("#all").attr("checked", $members.length == $("input[name=‘member‘]:checked").length ?  true : false);
    });
    ===>如果全部选中的长度和总长度一致则全选的勾自动勾上,或者自动去除
    ---JS全选代码
    var products=document.getElementsByName("product");
    for(var i=0;i<products.length;i++){
        products[i].checked=document.getElementById("all").checked;
    }

 
















































































































































































































以上是关于JavaScript 笔记的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段12——JavaScript的Promise对象

30秒就能看懂的JavaScript 代码片段

学习笔记:python3,代码片段(2017)

36个工作中常用的JavaScript函数片段

常用Javascript代码片段集锦

48个值得掌握的JavaScript代码片段(上)