百度学院2019学习笔记-Javascript

241 阅读5分钟

! 之前没写,感觉费劲做完了再回头看效果不好,所以及时总结记录一下,菜鸟学习笔记,可能很多方法不对,欢迎批评指正!

D20

  1. 数字,字符串,返回值,表单元素返回值,函数参数等等,到底加不加引号,用不用变成数字/字符串,啥时候加.value,啥时候用.innerHTML/.innerText, 直接onclick 和用 buttons.addEventListener("click", function () {}的区别

  2. 函数调用

    blog.csdn.net/luanpeng825…

    四种方法:函数调用、方法调用、构造器调用、间接调用

    使用函数调用模式调用函数时,非严格模式下,this被绑定到全局对象;在严格模式下,this是undefined,因此’this’可以用来判断当前是否是严格模式:

    var strict = (function(){return!this;}());
    

    因为函数调用模式的函数中的this绑定到全局对象,所以会发生全局属性被重写的现象 。具体例子:

    var a = 0;
    function fn(){
    this.a = 1;
    }
    fn();
    console.log(this,this.a,a);//window 1 1(这里a的值被改变了)
    

    加不加括号的区别:

    这是一个函数调用模式的例子:

    function name(){}; //定义一个函数
    1. name(); //这种方法会无视前面的条件,比如:
    button.onclick =name(); //不等button被click就会开始运行name函数。如果函数有参数,必须要括号的话,可以这样:
    function(){name(canshu_);}
    2.  name;//比较安全。
    

    还有很多别的调用方式,还没用到且涉及到工作域的问题,看链接;

  3. 改变样式

    属于样式的(CSS), 都需要增加style来使用. 而不属于样式,属于节点身份信息或数据信息识别用的,不需要加.

    Eg:
    element.style.opacity = i/10;
    document.getElementById(yincang).style.display="none";
    element.disabled = false;(这里false不加引号,布尔值,在html中用的时候也不加引号,其他字符串类型的属性一般都加引号-)
    
  4. 全局变量

    在函数里定义的变量可以拿到函数外用么? 看你怎么定义了。

    function(){var x_=1;}; console.log(x_);//undefined
    function(){var x_=1;}; alert(x_);//undefined
    function(){x_=1;}; console.log(x_);//1
    function(){x_=1;}; alert(x_);//1
    function(){windom.x_=1;}; console.log(x_);//1
    function(){window.x_=1;}; alert(x_);//1
    

    严格模式下在函数内定义的变量不是全局变量,所以后面的不能调用,把var去掉或者换成window.就好。

  5. 输出的换行

    + '</br>' + 这是我见过的最方便的,当然我见的还少

  6. 对象转为数组

    参考这个链接 blog.csdn.net/weixin_3809…

  7. 创建空数组和空对象的几个方法

    参考这个链接 www.cnblogs.com/liangzi4000…

  8. Javascript 中 null、NaN和undefined的区别

    参考这个链接 www.cnblogs.com/qiantuwulia…

  9. JS实时监控输入栏内容

    本文链接:blog.csdn.net/cccmercy/ar…

    onpropertychange: IE下,当一个HTML元素的属性改变的时候,都能通过onpropertychange来即时捕获。onchange在属性值改变时还必须使得当前元素失去焦点(onblur)才可以激活该事件在用js脚本改动该元素值时候亦能触发onpropertychange事件。

    oninput:是onpropertychange的非IE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效。

    onchange: (a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效);(b)当前对象失去焦点(onblur);

  10. 冒泡的阻止和利用

    blog.csdn.net/supercooooo…

  11. oninput vs onchange

    oninput 事件在用户输入时触发,该事件在 <input><textarea> 元素的值发生改变时触发。

    提示: 该事件类似于 onchange 事件。不同之处在于 oninput 事件在元素值发生变化是立即触发,onchange在元素失去焦点时触发。另外一点不同是 onchange 事件也可以作用于 <keygen><select> 元素.

  12. 调用函数返回值

    function getInput() {		
       	return trim = inputBox.value
    	}
    result = getInput() + postfixList[i]
    

但不加括号的话: result = getInput() + postfixList[i]

    总结:一定要加括号,否则不返回函数结果
  1. value与innerHTML和innerText

对于表单控件,都可以用value属性,对于非表单控件,可以用innerHTML
1. input:(有value,没有innerHtml)
2. textarea:(有value和innerText,没有innerHTML)
3. select:(innerHtml和value,但是一个是取回文本,一个是取回值)
4. li
5. progress
6. option:(innerHtml和value,但是一个是取回文本,一个是取回值)
7. meter 等等,(常用的几个记一下,用到查,没必要死记)
  1. 编码和解码/转义与反转义,可直接套用

转自 www.cnblogs.com/GumpYan/p/7…

var HtmlUtil = {
        /*1.用浏览器内部转换器实现html转码*/
        htmlEncode:function (html){
            //1.首先动态创建一个容器标签元素,如DIV
            var temp = document.createElement ("div");
            //2.然后将要转换的字符串设置为这个元素的innerText(ie支持)或者textContent(火狐,google支持)
            (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html);
            //3.最后返回这个元素的innerHTML,即得到经过HTML编码转换的字符串了
            var output = temp.innerHTML;
            temp = null;
            return output;
        },
        /*2.用浏览器内部转换器实现html解码*/
        htmlDecode:function (text){
            //1.首先动态创建一个容器标签元素,如DIV
            var temp = document.createElement("div");
            //2.然后将要转换的字符串设置为这个元素的innerHTML(ie,火狐,google都支持)
            temp.innerHTML = text;
            //3.最后返回这个元素的innerText(ie支持)或者textContent(火狐,google支持),即得到经过HTML解码的字符串了。
            var output = temp.innerText || temp.textContent;
            temp = null;
            return output;
        },
        /*3.用正则表达式实现html转码*/
        htmlEncodeByRegExp:function (str){ 
             var s = "";
             if(str.length == 0) return "";
             s = str.replace(/&/g,"&");
             s = s.replace(/</g,"<");
             s = s.replace(/>/g,">");
             s = s.replace(/ /g," ");
             s = s.replace(/\'/g,"'");
             s = s.replace(/\"/g,'"');
             return s; 
       },
       /*4.用正则表达式实现html解码*/
       htmlDecodeByRegExp:function (str){ 
             var s = "";
             if(str.length == 0) return "";
             s = str.replace(/&/g,"&");
             s = s.replace(/</g,"<");
             s = s.replace(/>/g,">");
             s = s.replace(/ /g," ");
             s = s.replace(/'/g,"\'");
             s = s.replace(/"/g,"\"");
             return s; 
       }
    };