js基础

1. 基础

1. 基本数据类型
var b;
typeof b;   //undefined
var a = true;
typeof a;   //boolen
var ele = document.getElementById("div1");
typeof ele;  //object
//typeof的返回类型number,string,bool,object,function,undefined,都是字符串
2. 字符串
//js中字符串是不能改变的
s = "Hello";
s[0] = "t";    //s还是="Hello"
s = s.toLowerCase();
s = s.toUpperCase();
s.indexOf('el');  //1
s.substring(0, 5);  // [0,5)
s.substring(5);      //[5,+oo);
3. 数组
var arr = [1, 2, 3];
arr[5] = 'x';
//arr => [1, 2, 3, undefined, undefined, 'x']
var arr = [1, 2, 3];
arr.length = 6;
//arr => [1, 2, 3, undefined, undefined]
arr.length = 2;
//arr =>[1, 2]
var arr = [10, 20, '30', 'xyz'];
arr.indexOf(30);   // -1
arr.indexOf('30'); //2
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
arr.slice(0, 3);  //[0, 3)
arr.slice(3);    // [3, +oo)
aCopy = arr.slice();    //[0, +oo) 相当于复制整个数组
aCopy === arr;      //false

push和pop

var arr = [1,  2];
arr.push('A', 'B');  //arr= [1, 2, 'A', 'B']
arr.pop();    //返回'B'
arr = [];
arr.pop();  // undefined

unshift和shift

var arr = [1, 2];
arr.unshift('A', 'B'); // arr =['A', 'B', 1, 2]
arr.shift();              // 'A'

sort

var arr = ['B', 'C', 'A'];
arr.sort();  //arr =['A', 'B', 'C']

reverse

var arr = ['one', 'two', 'three'];
arr.reverse(); //arr = ['three', 'two', 'one']

splice

var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];
arr.splice(2, 3, 'Google', 'Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite'];
//arr = ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle'];
//只删除,不添加
arr.splice(2, 2);   //从索引2 开始,删除两个
//只增加,不删除
arr.splice(2, 0 , 'Google', 'Facebook');

数组遍历

var myArr = ['xu', 'zhang', 'ji', 'shou'];
for (x in myArr) {
  console.log(myArr[x]);
}
//////////////////////
myArr.forEach(function(e){});
老版ie没有forEach方法,手动增加
if(!Array.prototype.forEach) {
  Array.prototype.forEach = function(callback, thisArg) {
    var T, k;
    if(this == null) {
      throw new TypeError("this is null or not defined");
    }
    var o = Object(this);
    var len = o.length >>> 0; //Hack to convert o.length to a UInt32

    if ({}.toString.call(callback) != "[object Function]") {
      throw new TypeError(callback + "is not a function");
    }

    if (thisArg) {
      T = thisArg;
    }
    k = 0;
    while(k < len) {
      var kValue;
      if (k in o) {
        kValue = o[k];
        callback.call(T, kValue, k, o);
      }
      k++;
    }
  }
}
/////////奇技淫巧
for(var i = myArr.length; i--;) {}

重要应用

//在浏览器通过document.getElementByTagName选择的DOM节点是一种类似array的array,不能使用pop和push
var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));

2. 判断Nan不能直接比较

a == NaN; //总是false
isNaN(a);  //如果a是NaN,返回true

js Date属性

var oDate = new Date();
oDate.getDate();          //返回 1-31中的一个数
oDate.getDay();          //返回0-6
oDate.getFullYear();   //返回四位数的年份
oDate.getHours();      //返回0-23
oDate.getMinutes();  //返回0-59
oDate.getSeconds();  //返回0-59
oDate.getMonth();     //返回月份0-11
oDate.getTime();      //返回1970年1月1日至今的毫秒数
oDate.toString();      //转化为字符串

3. AJAX笔记

var oAjax;
if(window.XMLHttpRequest) {
  oAjax = new XMLHttpRequest();
} else {
  oAjax = new ActiveXObject("Microsoft.XMLHTTP");
}

oAjax.open("GET", "test.txt", true); //true代表异步
oAjax.send(); //可以穿一个string,但是只能在POST中用

ajax在浏览器未关闭的时候,同一个地址只读一次(缓存)
//如果想要像表单一样提交数据,必须设置http头
xmlhttp.open("POST","ajax_test.html",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");

//获取返回值
oAjax.responstText //以字符串形式返回数据
oAjax.responseXML //已XML形式返回数据
onreadystatechange  ->存储函数,当readyState发生变化时调用
readState => 0-4
status => 200,404

oAjax.onReadyStatechange = function() {
  if(oAjax.readyState == 4 && oAjax.status == 200) {
    
  }
}
var com = "1+2+3-4+10*15-6";
eval(com);//计算这个表达式

var strS = '[1, 2, 3]';
var arr = eval(strS);

输入控件状态变化

HTML表单事件

onblur           =>元素失去焦点执行脚本
onchange         =>当元素改变执行脚本
onfocus          =>当元素获得焦点执行脚本
onformchange     =>当表单改变执行脚本
onforminput      =>当表单获取用户输入执行脚本
oninput          =>当元素获取用户输入执行脚本
oninvalid        =>当元素无效时执行脚本
onselect         =>当选取元素时执行脚本
onsubmit         =>当表单提交时执行脚本

HTML键盘事件

onkeydown            =>键盘按下时
onkeypress           =>当按下并松开键盘时
onkeyup              =>当键盘松开时
#this.value就是输入控件的值
<form action=""> 
First name: <input type="text" id="txt1" onkeyup="showHint(this.value)" />
</form>
<select name="customers" onchange="showCustomer(this.value)" >
  <option value="APPLE">Apple Computer, Inc.</option>
  <option value="BAIDU ">BAIDU, Inc</option>
  <option value="Canon">Canon USA, Inc.</option>
  <option value="Google">Google, Inc.</option>
  <option value="Nokia">Nokia Corporation</option>
  <option value="SONY">Sony Corporation of America</option>
</select>
可以为一个form设置一个onchange函数,如果checkbox和radiobutton 改变则会调用,
文本框中文字改变不会调用
#小笔记
<div name="abc"><b>测试</b></div>
.innerHTML == <b>测试</b>
.innerTEXT == 测试
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容