! 之前没写,感觉费劲做完了再回头看效果不好,所以及时总结记录一下,菜鸟学习笔记,可能很多方法不对,欢迎批评指正!
D20
-
数字,字符串,返回值,表单元素返回值,函数参数等等,到底加不加引号,用不用变成数字/字符串,啥时候加.value,啥时候用.innerHTML/.innerText, 直接onclick 和用 buttons.addEventListener("click", function () {}的区别
-
函数调用
四种方法:函数调用、方法调用、构造器调用、间接调用
使用函数调用模式调用函数时,非严格模式下,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;//比较安全。还有很多别的调用方式,还没用到且涉及到工作域的问题,看链接;
-
改变样式
属于样式的(CSS), 都需要增加style来使用. 而不属于样式,属于节点身份信息或数据信息识别用的,不需要加.
Eg: element.style.opacity = i/10; document.getElementById(yincang).style.display="none"; element.disabled = false;(这里false不加引号,布尔值,在html中用的时候也不加引号,其他字符串类型的属性一般都加引号-) -
全局变量
在函数里定义的变量可以拿到函数外用么? 看你怎么定义了。
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.就好。
-
输出的换行
+ '</br>' +这是我见过的最方便的,当然我见的还少 -
对象转为数组
参考这个链接 blog.csdn.net/weixin_3809…
-
创建空数组和空对象的几个方法
参考这个链接 www.cnblogs.com/liangzi4000…
-
Javascript 中 null、NaN和undefined的区别
参考这个链接 www.cnblogs.com/qiantuwulia…
-
JS实时监控输入栏内容
本文链接:blog.csdn.net/cccmercy/ar…
onpropertychange: IE下,当一个HTML元素的属性改变的时候,都能通过onpropertychange来即时捕获。onchange在属性值改变时还必须使得当前元素失去焦点(onblur)才可以激活该事件在用js脚本改动该元素值时候亦能触发onpropertychange事件。
oninput:是onpropertychange的非IE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效。
onchange: (a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效);(b)当前对象失去焦点(onblur);
-
冒泡的阻止和利用
-
oninput vs onchange
oninput 事件在用户输入时触发,该事件在
<input>或<textarea>元素的值发生改变时触发。提示: 该事件类似于 onchange 事件。不同之处在于 oninput 事件在元素值发生变化是立即触发,onchange在元素失去焦点时触发。另外一点不同是 onchange 事件也可以作用于
<keygen>和<select>元素. -
调用函数返回值
function getInput() { return trim = inputBox.value } result = getInput() + postfixList[i]
result = getInput() + postfixList[i]
总结:一定要加括号,否则不返回函数结果
-
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 等等,(常用的几个记一下,用到查,没必要死记)
-
编码和解码/转义与反转义,可直接套用
转自 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;
}
};