JavaScript基础性知识总结

总结一些js基础问题,可能会比较凌乱
中文乱码问题:
js文件的编码方式与js文件的显示方式不一致,所以就会乱码,把js文件用notepad打开,转换编码方式,或者在js文件中加charset=""
js位置:
引用外部js文件:<script type="text/javascript" src="dreamdu.js"></script>(html中不可省略,xhtml可以省略)
内嵌js代码:<script type="text/javascript">js代码</script>

javascript作为一种脚本语言可以放在html页面中任何位置,但是浏览器解释html时是按先后顺序的,所以前面的script就先被执行。比如进行页面显示初始化的js必须放在head里面,因为初始化都要求提前进行(如给页面body设置css等);而如果是通过事件调用执行的function那么对位置没什么要求的。
放在<head>部分
最常用的方式是在页面中head部分放置<script>元素,浏览器解析head部分就会执行这个代码,然后才解析页面的其余部分。
放在<body>部分,后端,中间
JavaScript代码在网页读取到该语句的时候就会执行。
很多情况需要在页面加载后才能执行js代码,所以外部js文件建议放在<body>的后端,即所有显示内容后面。

js里字符串可用单引号也可以双引号 ,JSON字符串必须用双引号

推荐用以下:
<a href="javascript:void(0);" οnclick="js_method()"
a href="javascript:;" οnclick="js_method()"
a href="#" οnclick="js_method();return false;"



==(值相同就行)和===(类型和值都相同,是严格比较),字符串比较用==

事件:
Event 对象(另一篇笔记有详细介绍)
Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
事件 通常与函数结合使用,函数不会在事件发生前被执行!

e.onclick = function(){};给e加上事件
e.onclick = compare;//compare是一个函数,点击e会激发compare执行
e.onclick = compare();//compare是一个函数,立即compare执行,加了()就是立即执行。

addEventListener() 方法用于向指定元素添加事件句柄。
提示: 使用 removeEventListener() 方法来移除 addEventListener() 方法添加的事件句柄。
element .addEventListener(event,function,useCapture)
event
必须。字符串,指定事件名。
注意: 不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。
提示: 所有 HTML DOM 事件,可以查看我们完整的 HTML DOM Event 对象参考手册
function
必须。指定要事件触发时执行的函数。
当事件对象会作为第一个参数传入函数。 事件对象的类型取决于特定的事件。例如, "click" 事件属于 MouseEvent(鼠标事件) 对象。
useCapture
可选。布尔值,指定事件是否在捕获或冒泡阶段执行。 何为捕获?何为冒泡?请看另篇笔记
可能值:
  • true - 事件句柄在捕获阶段执行
  • false- false是默认。事件句柄在冒泡阶段执行
您可以在文档中添加许多事件,添加的事件不会覆盖已存在的事件。
document.getElementById("myBtn").addEventListener("click", myFunction);
document.getElementById("myBtn").addEventListener("click", someOtherFunction);
您可以在同一个元素中添加不同类型的事件。
document.getElementById("myBtn").addEventListener("mouseover", myFunction);
document.getElementById("myBtn").addEventListener("click", someOtherFunction);
当传递参数值时,使用"匿名函数"调用带参数的函数:
var p1 = 5;
var p2 = 7;
document.getElementById("myBtn").addEventListener("click", function() {
    myFunction(p1, p2);
});
var x = document.getElementById("myBtn");
if (x.addEventListener) {                    //所有主流浏览器,除了 IE 8 及更早 IE版本
    x.addEventListener("click", myFunction);
} else if (x.attachEvent) {                  // IE 8 及更早 IE 版本,不支持addEventListener,就用attachEvent
    x.attachEvent("onclick", myFunction);
}
 内置对象:
.属性      没有括号
.方法()     有括号

数组:
参照JS高级设计, 看书比较好
//定义一维数组,数组赋值
var myarr=new Array(); //定义数组
 myarr[0]=80;
 myarr[1]=60;
 myarr[2]=99;

var myarray = new Array(66,80,90,77,59);//创建数组同时赋值
var myarray = new Array(6);//定义一有6个数的数组
var myarray = [66,80,90,77,59];//直接输入一个数组(称 “字面量数组”)
//获得数组myarray的长度
myarray.length; 
//二维数组
var myarr=new Array();  //先声明一维
for(var i=0;i<2;i++){  //一维长度为2
  myarr[i]=new Array();  //再声明二维
  for(var j=0;j<3;j++){  //二维长度为3
  myarr[i][j]=i+j;  // 赋值,每个数组元素的值为i+j
  }
}
 
var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3]];//不一定就是标准i行j列
Myarr.length=2;
Myarr[0].length=3;
1.创建的新数组是空数组,没有值,如输出,则显示undefined。
2.虽然创建数组时,指定了长度,但实际上数组都是变长的,也就是说即使指定了长度为8,仍然可以将元素存储在规定长度以外。myarray[5]=88;  //使用一个新索引,为数组增加一个新元素

数组的迭代方法:(JS高级设计有详细介绍)
.evey() 返回ture false,数组每一项满足函数操作->ture;
.some() 返回ture false,数组有一项满足函数操作->ture;
.filter() 返回一个满足条件的新数组
.map() 返回原始数组每一项进行函数操作后得到数据构成的新数组
.forEach() 不返回任何值,对数组每一项进行函数操作


数组连接: arrayObject.concat(array1,array2,...,arrayN)
该方法不会改变现有的数组arrayObject,而仅仅会返回被连接数组的一个副本。arr.concat()返回一个arr的副本

指定分隔符连接数组元素: arrayObject. join(分隔符);
                    join()方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。分隔符可选,忽略就以 分割。
//eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
//下面方法可以用来计算给定数组 arr 中所有元素的总和。
function sum(arr) {
return eval(arr.join('+'));
}
//输入例子:sum([ 1, 2, 3, 4 ])  输出例子:10
选定元素构成新数组slice():arrayObject .slice(start,end);  
             
1.返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
2. 该方法并不会修改数组,而是返回一个子数组。
可使用负值从数组的尾部选取元素。
如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
String.slice() 与 Array.slice() 相似。

数组排序:arrayObject.sort() sort(<方法函数名>)
               sort()方法使数组中的元素按照一定的顺序排列。        

1.如果不指定<方法函数名>, 则按unicode码顺序排列。不能按照数的大小来排序。
2.如果指定<方法函数>,则按<方法函数>所指定的排序方法排序。
<script type="text/javascript">
  function sortNum(a,b) {
  return a - b;
 //升序,如降序,把“a - b”该成“b - a”
}
 var myarr = new Array("80","16","50","6","100","1");
  document.write(myarr + "<br>");
  document.write(myarr.sort(sortNum));//或sort('sortNum()')
</script>

Date日期对象:
var Udate=new Date();//使 Udate 成为日期对象,没有参数显示是 当前时间(当前电脑系统时间)
注意:使用关键字new,Date()的首字母必须大写。 日期显示因浏览器而异,不能保证一致。
如果想设置特定时间, Date.parse() 和 Date.UTC()
Date.parse(str);
参数:表示日期的字符串,字符串的格式不定。如果不能表示日期,返回NaN。
//表示2012年10月1日,在火狐浏览器显示的是2012年9月30日,在谷歌浏览器显示的是2012年10月1日
var sd = new Date(Date.parse('2012,10,1');
var sd1 = new Date(Date.parse('October 1,2012');
var sd2 = new Date('October 1,2012');//后台调用Date.parse()
Date.UTC();
参数:年份,月份(0-11),天(1-31),小时(0-23),分钟,秒,毫秒。前两个参数必须,天没有假设为1,其他假设为0.

//表示2012年10月1日,在火狐浏览器显示的是2012年9月30日,在谷歌浏览器显示的是2012年10月1日
var d = new Date(Date.UTC(2012, 9, 1,));  
var d1 = new Date(Date.UTC(2012, 9)); 
var d2 = new Date(2012,9,1,17,55,55);//2012年10月1日下午5点55
Date.now();
表示当前日期时间的毫秒数.IE9+,FF3+,Safar3+,Opera10.5,chrome支持
var start = Date.now();
doSomething();
var end = Date.now();
var stop = start - end;
//不支持的用+new Date()代替Date.now()
Date的valueOf()方法不返回字符串,返回日期的毫秒表示。可以用<和>比较日期值,谁早谁小。
var d1 = new Date(2007,1,1);
var d2 = new Date(2007,2,1);
alert(d1<d2);//true


getDay()     返回0-6的数字,0是星期天;
  var mydate=new Date();
  var weekday=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
  document.write("今天是:" + weekday[mydate.getDay()]);
js计时器


设置隔段计数器:setInterval(代码,交互时间);
参数说明:
1. 代码:要调用的函数或要执行的代码串。
2. 交互时间:周期性执行或调用表达式之间的时间间隔,以毫秒计(1s=1000ms)。
返回值:一个可以传递给 clearInterval() 从而取消对"代码"的周期性执行的值。
调用函数格式(假设有一个clock()函数) : setInterval("clock()",1000)或setInterval(clock,1000)


取消隔段计时器:clearInterval(id_of_setInterval)
参数说明:   和setInterval()一起使用
id_of_setInterval:由 setInterval() 返回的 ID 值。


设置过后计时器:setTimeout(代码,延迟时间);
                    与setInterval(代码,时间);类似。
取消过后计时器:clearTimeout(id_of_setTimeout)
setTimeout()和clearTimeout()一起使用,停止计时器。
参数说明:
id_of_setTimeout:由 setTimeout() 返回的 ID 值。该值标识要取消的延迟执行代码块。


字符串对象
长度属性: str.length
大写小写方法:str. toUpperCase();     str. toLowerCase();  
字符串变成数字类型: parseInt(str);//忽略字符串前空格,从第一个非空格字符开始,如第一个不是数字字符或者负号,返回NaN;如第一个是数字字符或者负号,继续解析下一个,直到遇到一个非数字字符。字符串以0开头,是八进制转换十;字符串以0x开头,是十六进制转换十。
parseInt('');//NaN
parseInt('1234bulue');//1234
parseInt('070');//八进制 56
返回指定位置的字符:str. charAt(index);
1.字符串中第一个字符的下标是 0。最后一个字符的下标为字符串长度减一(string.length-1)。
2.如果参数 index 不在 0 与 string.length-1 之间,该方法将返回一个空字符串。
3.空格也是一个字符。
提取字符串:stringObject. substring(startPos,stopPos);

提取指定数目的字符串:stringObject. substr(startPos,length);
去掉字符串首尾的空格,返回新串:str.trim()
返回指定的字符串首次出现的位置:stringObject.indexOf(substring, startpos);
字符串分割:stringObject.split(separator,limit)
如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
字符串匹配:str.match()
      match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

返回值:存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g ,  没有返回null
var str="Hello world!"
document.write(str.match("world") + "<br />")

var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g))
js中的正则表达式是放在 /~~~/里面的, g是匹配模式中的一种,表示全局匹配(找到所以匹配的项),如果没有就只匹配一次。
正则表达式匹配,请看另一篇笔记:http://blog.csdn.net/qq_21184771/article/details/56333874
js的正则匹配,详细请看另一篇笔记:http://blog.csdn.net/qq_21184771/article/details/56334450

Math对象:     
Math 对象是一个固有的对象,无需创建它,直接把 Math 作为对象使用就可以调用其所有属性和方法。这是它与Date,String对象的区别。



BOM浏览器对象模型
History 对象
window.history.[属性|方法]   注意:window可以省略。history对象记录了用户曾经浏览过的页面(URL),并可以实现浏览器前进与后退相似导航的功能。
注意:窗口被打开的那一刻开始记录,每个浏览器窗口、每个标签页乃至每个框架,都有自己的history对象与特定的window对象关联。
History 对象属性

History 对象方法

length:浏览器历史列表中URL数量

back()----加载history列表中前一个URL

forward()----加载history列表中下一个URL

go(number)----加载history列表中某个具体页面

用length属性,当前窗口的浏览历史总长度
<script type="text/javascript">
  var HL = window.history.length;
  document.write(HL);
</script>

window.history.go(number);
window.history.back() 等同于 window.history.go(-1)
window.history.forward() 等同于 window.history.go(1)

Location对象
location用于 获取或设置窗体的URL,并且可以用于解析URL。
location.[属性|方法]
location 对象属性:
location 对象方法:

Navigator对象
  navigator.属性 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本。

var browser=navigator.appName;
navigator.userAgent来判定浏览器版本信息等 几种浏览的user_agent.,像360的兼容模式用的是IE、极速模式用的是chrom的内核。


screen对象
screen对象用于获取用户的屏幕信息。
window.screen.属性  可以不使用 window 这个前缀

window对象:



window一些常用方法:
  • alert();
  • document.write();
  • var mess = confirm(str); 确认框,确定mess返回TRUE;取消返回flase;
  • prompt(str1, str2); 提问框
str1: 要显示在消息对话框中的文本,不可修改
str2:文本框中的内容,可以修改。str2可以不填
1. 点击确定按钮,文本框中的内容将作为函数返回值
2. 点击取消按钮,将返回null
  • window.open([URL], [窗口名称], [参数字符串])
URL:可选参数,在窗口中要显示网页的网址或路径。如果省略这个参数,或者它的值是空字符串,那么窗口就不显示任何文档。
窗口名称:可选参数,被打开窗口的名称。
    1.该名称由字母、数字和下划线字符组成。
    2."_top"、"_blank"、"_self"具有特殊意义的名称。
       _blank:在新窗口显示目标网页
       _self:在当前窗口显示目标网页
       _top:框架网页中在上部窗口中显示目标网页
    3.相同 name 的窗口只能创建一个,要想创建多个窗口则 name 不能相同。
   4.name 不能包含有空格。
参数字符串可选参数,设置窗口参数,各参数用逗号隔开。


例如:打开http://www.imooc.com网站,大小为300px * 200px,无菜单,无工具栏,无状态栏,有滚动条窗口:
<script type="text/javascript">
 window.open('http://www.imooc.com','_blank','width=300,height=200,menubar=no,toolbar=no, status=no,scrollbars=yes')
</script>
  •  close()关闭窗口
window.close();  //关闭本窗口
<窗口对象>.close();   //关闭指定的窗口

DOM文档对象模型
  • document.getElementById("id");获取到整个id对象
  • document.getElementById("id").innerHTML;获取到的id对象的内容,或,更改id对象内容
  • document.getElementById(“id”).value ; 获取input里面的值
  • Object.style.property=“new style”;
注意:Object是获取的元素对象,如通过document.getElementById("id")获取的元素。
基本属性表(property):
  • Object.style.display = “value”;显示和隐藏(display属性)
注意:Object是获取的元素对象,如通过document.getElementById("id")获取的元素。
value取值: none(被隐藏)    block(显示为块级元素)

  • object.className = “classname”;className 属性设置或返回元素的class 属性。
作用:
1.获取元素的class 属性
2. 为网页内的某个元素指定一个css样式来更改该元素的外观
  • object.removeAttribute("style");去掉该元素样式





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值