Js基础

来源:互联网 发布:linux系统工程师面试题 编辑:程序博客网 时间:2024/06/03 12:42
http://www.jianshu.com/p/bee295965800   chrome开发者工具


第一章
一、发展
netscape--livescript+sun=javascript


二、特征
客户端脚本语言,安全性较高,嵌入式语言,松散型(弱类型),解释型。


三、应用
1.业内式


<script type="text/javascript">
...
</script>
2.
<script type="text/javascript" ref="路径,js文件">
3.页内式
<p onclick="JS代码"></p>


四、web标准
1.结构:页面实体 HTML(超文本标记语言)
2.表现:CSS(样式表)
3.行为:DOM(JS文档对象模型)


****结果表现行为,三者分离。


第二章 结构性语言-HTML
一.分类
XML:可拓展标记语言
html:
XHTML:可拓展超文本标记语言


二、语法
<标签名>...</标签名>或<标签名/>
前者:一般标签
或者:空标签


note:标签不允许交叉


三、常用标签
1.文档结构类
<html></html>:声明文档类型
<body></body>:声明文档内容(可见)
<head></head>:声明文档信息(不可见)


2.区段格式标签
<p></p>:自然段
<br />:断行
<title>...</title>:页面标题(唯一,head)
<hi></hi>:(i=1~6):文字标题(值越小,级别越高。body)
<hr />:水平分割线
<pre></pre>:文字格式化标签(所见即所得)


3.图片标签
<img />
src 路径
alt 文字替换
width 宽
height 高


4.****列表
1)有序列表 <ol>...</ol>
列表项<li>...</li>


2)无序列表 <ul>...</ul>
列表项<li>...</li>


3)自定义列表 <dl></dl>
自定义列表项 <dd></dd>
标题<dt></dt>




5.表格
<table></table>:表格
<tr></tr>:行
<tb></tb>:单元格


属性:
border:边框
width :宽(绝对单位(PX),相对单位(%))
表格高度由单元格高度决定。


6.锚标签(定位)
<a></a>


属性:
href:链接目标。
target:链接目标打开方式。(_blank链接目标在新窗口打开。)




7.表单。(控件)


1.表单域
<form></form>


2.输入类控件
<input type="" />


type 属性:
type="text":单行文本框。
type="password":掩码
type="radio"   :单选框 (通过ID与NAME属性,控制单选框唯一性。)
type="checkbox":复选框 
type="file"    :文件域
type="submit"  :提交按钮 (value属性:默认值属性,可用于text,password,textarea,所有按钮)
type="reset"   :重置按钮,清空表单(针对form内元素)
type="button"  :普通按钮


补充:
disabled:禁用
size    :控制文本框的宽度。
maxlength:最大字符个数.


3.下拉列表框
<select></select>
<option><option> : 列表项
 
(
selected :下拉列表默认选择状态。
size     : 控制列表高度。
multiple :复选(多选)
)


4.文字域
<textarea></textarea>


rows:控制文字域行数。=高度。
cols:控制文字域列数。=宽度。




第三章  层叠样式表


一、CSS概念
1.组成
选择器、属性值、值


2.语法格式
选择器{ 属性:值; }
note:
所有符号均为英文半角,选择器首字母不能用数字。


二、选择器分类****
1.基本选择器
1)标签选择器:针对同类标签生效,以标签名命名。
2)类选择器  :针对个别元素,跨元素,1:多。自定义名称(用.声明,class调用)。
3)id选择器  :针对个别元素,1:1,自定义名称。(用#声明,id调用)


优先级:id>类>标签


2.复合选择器
1)交集选择器:同时满足两个条件。
p.no2{}  table.#abc{}


2)并集选择器:群组声明
h1,h2,h4,h3,.no2{}


3)后代选择器:通过制定祖先查找子元素,用空格区分。
table h3{}


note:特殊选择器
*:通配选择器,声明页面中所有元素。




三、常用CSS属性。
1.盒子模型。*****
width:内容宽度,不包含边框。
heidth:内容高度,不包含高度。
padding:内边距。
margin :外边距。
border :边框。


note:
margin与padding的简写方案
四个值:上,右,下,左。
两个值:上下,左右。
三个值:上,左右,下。




boder-wigth:边框宽。
boder-style:边框样式.
boder-color:边框颜色.


补充属性:
display:block\inline\none;控制元素的显示方式,块\行\隐藏。
**:行级元素不具备,宽高特征。




盒子模型水平距离:由相邻外边距之和决定.
        垂直距离:塌陷,两个外边距最大的外边距决定。**
实际宽度=width+boder+margin+padding
2.文字属性。
font-family:字体
font-size :字号 px,pt ,%,em 
color     :字色。
line-heigth:行间距(% em)
font-weigth:文字加粗。(bold,bolder)
font-style :倾斜.
text-align :对齐方式。(left\right\center)
text-indent:首行缩进。
text-decoration:文字修饰.






3.背景属性。
background-color:背景色(纯色)
backgruoud-imag:url(图片地址)   背景图片。
background-repeat:背景的重复控制(repeat-x/y,no-repeat)
background-position:背景定位(后跟两个值).




4.列表属性。
list-style-type:none;列表无修饰符。


5.浮动*****
float:left\right\none;
特点:
1.丢失宽度,变为仅能容纳内容的最小宽度。
2.丢失位置,后续元素取代其位置。
3.后续元素的内容,环绕前一个浮动元素显示。


clear:请出浮动不良效果(left\right\both)
空白DIV法:最后一个浮动元素后方,让其装载clear属性,解决自适应高度问题。


6.层定位模型
position:relative(相对定位)/absolute(绝对定位)
note:要想实现唯一,要结合方位属性(距离).


1.相对定位
相对原有位置进行位移。


对同级元素无影响。原位置保留。


2.绝对定位
位置丢失,宽度丢失。


定位参照物:距离它最近的,具有定位属性的,祖先元素。如没有,则以浏览器边界定位。


可实现层叠效果(可调整位置)。


补充:层叠位置属性
z-index:Z轴索引(数值), 前提:层叠元素必须都是绝对定位。数值越大越靠前。


四、效果应用
1.布局效果。






2.链接效果。(伪类选择器)
:link   正常状态
:hover  触发状态
:active 激活状态
:visited浏览后状态


1)控制链接外观。


2)多种连接效果并存。
方法:为要指定特殊效果的链接指定class名,使用a.名称声明。


补充:(L-V-H-A)要按照这个次序指定外观。


补充:overflow:hidden(溢出后隐藏)/scroll(添加滚动条)


块级元素居中:


选择器{ margin:0px auto;}




第三部分-JS语法。
1.语法


1)严格区分大小写。
2)自定义名称:首字母必须字符,下划线,$,


2.注释://,/*  */


3.字面量/直接量/常量


4.保留字与关键字


5.变量。JS是弱类型语言,声明变量时不能声明数据类型,
用var声明,局部变量;
不用var声明。默认为全局变量;
变量类型由值决定、


二、数据类型


1.typeof:检测变量类型;




alter() 弹出警告框。
prompt("","") :弹出输入框。(提示文字,默认值)
onfocus:获取焦点
onblur:失去焦点。


2.Undefined:变量未初始化类型。


与not defined区别:
Undefined:有变量,无值,正常;
not defined:无变量,报错;


3.Null:空对象引用。(空指针),null


null
no      :CSS中代表不
not     :取反。
none    :CSS中代表无
NaN     :not a number


4.boolean:布尔型。


1)注意事项
该类型与其他类型都有对应关系。
字符串:非空串==true 空串==false。
数值:  非零==true  0==false  NaN==false
隐式转换 :自动进行的类型转换。


2)涉及函数
Boolean():显性的将其他类型转换为布尔型。


5.number:无整形与浮点型,统称数值型。


1)进制
二:0 1
八:0~7
十:
十六:前导0x 后导0~9或A~F


2)浮点声明与运算
声明方式 : var a=3.6 ,b=0.8,c=.7
运算特征:精确到十七位(慎用)


3)NaN :非数值 not a number
InFinity:正无穷。
-InFinity:负无穷。


4)涉及函数
Number():将其他类型转换为数值型
parseInt():将字符串或数值,转换为数值型;
(1)类型转换 (2)进制转换--8||16 
(3)配合参数,可做任意进制转换
parseFloat():将字符串转换为浮点数值




6.string:字符串,是JS中,最基本的数据类型;
1)注意事项
   ""=='',但不能交叉
2)转义字符 : &lt左尖括号<    右尖括号
\"代表输出双引号
\'代表输出单引号
\n换行
note:
&lt左尖括号<    
&gt右尖括号>
&nbsp:文字占位符


document.write("..."):向HTML输出,解析后显示


3)涉及方法
.toString(参数):将数值转换为字符串,参数代表进制




平方根Math.sqrt


note:补充方法
Date():当前系统时间对象
.getYear():年份1900-1999
.getFullYear():年份*****
.getMonth():月份,注意比正常少一个月
.getDay:星期数
.grtDate():日期
.getHours():小时
.getMinutes():分钟
.getSeconds():秒




平方根Math.sqrt()
Math.max():最大值
Math.min():最小值
Math.random():介于0~1间的随机小数




三.运算符
1.
=:赋值
==:等于,字面含义判断
===:全等,数据类型必须一致


2.一元运算符:只有一个操作数
++  --
++a


3.三元(目)运算符:简化版的if语句
?:
x>y?x:y


4.求余数:%  mod


4.优先级(见课件)




=========================================================================================================
第二部分   流程控制语句


一、语句构成:由一个或多个关键字组成,实现指定任务(如循环、判断...)


二、语句形式:
单行语句:if() alter(“”)
复合语句:代码块。{...}当做一条语句处理。


三、语句分类
1.声明语句:
var box=100;
label:box;


2.表达式语句
box=100;
box();函数表达式;
box.property=100  属性表达式;
box.method();方法表达式


3.分支语句(判断语句)
1)if()...单路分支
2)if()...else...双路分支。
3)if()...else if()...else if()... else... 多路分支
4)switch(表达式或值){
   case n:...
   }精确型判断的多路分支。


note:常结合break,default来使用;


4.循环语句
1.for(赋值语句;判断语句;运算语句) {循环体}
2.while(条件表达式) { 循环体,带运算语句 }
3.do{循环体...} while(条件表达式);
4.for in :枚举对象中的所有属性名


5.控制语句
break: 跳出循环;
countiue:跳出当前循环,进入下次循环;
try catch:


6.其他语句。
;空语句。
with:将语句功能定义到一个对象当中。(工作范围)




第三部分 函数
特征:
1)封装 2)重复调用


一、函数声明
1.普通声明:
function 函数名(){...}


not:
匿名函数:
function (){...}
触发:
window.onload=function(){} 当窗体所有内容加载完毕,才可触发
document.事件=function{}{} 当前页面文档




2.带参数的函数声明
function 函数名(形式参数序列){...}


形参:决定运算过程。
实参:实际参与运算。


二、return
1.将运算结果返回到调用函数的位置(传值)


2.停止函数运行。


3.JS中,return false可停止html元素的默认动作。(表单的提交,超链接的跳转)




三、arguments参数
*****
JS中,函数不在乎实参与形参的个数及对应关系。


四、
.getElementById()通过ID名,或许页面中唯一元素。
.length       :返回字符串长度
.indexOf()    :检测字符在串中出现的位置;
  1.检测首次出现的位置,下标从0开始。
  2.如检测字符串,则返回首字母位置。
  3.返回值为非负整数。如反馈-1,则没找到。
.focus()      :获取焦点
.substring(数值1,数值2)  :截取字符串。[数值1,数值2)。数值2可省略。
.isNaN        :判断是否为非数值。
.innerHTML    :获取(改写)指定HTML标签中的所有内容、
  与value的区别,value只获取元素的值,innerHTML获取标签内所有元素。


==========
一、setTimeout("code",time):延迟执行,仅执行一次.
time:单位毫秒。延迟多长时间。
code:
1.如果是代码或基本语句,则用""声明。
2.如果是函数。
  1)无参数,直接用函数名声明。            setTimeout(box,1000)
  2)如有参数,或以函数表达式方式书写.     setTimeout("box()",1000)


配套:clearTimeout(延迟对象名称)


二、setInterval("code",time):间隔执行(重复执行。)。


note:警告框会占用浏览器运行线程,中断(暂停)后台其他线程




.style:声明对象的某个属性。         (HTML样式)
.className:为HTML对象增加一个类名。(CSS样式)


confirm("string") :确认框。
  确认==true
  取消==false




递归:自身调用自身
迭代:自身的值由自身运算得到。
.scr:对象元素(图片)的路径。


disabled:控制对象元素是否禁用






==============================================================
数组:


1.new方法声明
var box=new box object


2.字面量(常量)
var box{
name:zhangsan,
age:18
}


3.传统方式
var box{}
box.name="zhangsan"


4.属性输出方法
对象名.属性名 == 对象名['属性名']


2、给对象创建方法(自定义方法)


通常使用匿名函数方式创建。


3、删除对象属性


delete 对象名.属性名


二、array类型


js中数组的特点:
  1.同一数组中元素,不限定类型。
  2.配合各种方法,对数组或元素进行,正,删,改,查,接


1.声明方法
  1.new运算符
var box=new Array();         //空数组
var box=new Array(10);       //指定长度数组
var box=new Array(1,"jhj",5) //指定内容数组




note:
使用alert和write方法输出时,数组会自动转换为字符串。


  2.传统方法
var box=[]        
var box=[10]               //数组中只有一个元素10,该方法不能预定义长度。  
box.length=10 定义数组长度






2.读取或修改数组内容
读取:结合下标
修改:通过赋值表达式。




3.使用length属性获取数组元素量
  1.控制数组长度。
  2.将指定内容追加至数组末端。 box[box.length]="123456666"


4.转换方法
隐式转换:使用alert或write.
显式转换:
.toString():转换为普通字符串,功能偏向于显示
.toLocaleString():同上,但针对时间有异
.valueOf():转换为原始格式,功能偏向于运算。


5.join()方法:用特殊字符替换间隔符


6.栈方法:先进后出
push():将新元素从末端追加进数组当中,返回新长度
pop():从末端删除一个元素,返回删除内容


7.队列方法:先进先出
shift():从首端删除一个元素,返回内容
unshift():从首端追加新元素,返回长度


8.重排序方法
reverse():倒序排序
sort():由小到大,按字符串格式排序   23,1,7,45,js ----1,23,45,js


9.其它操作方法
concat():
1)数组连接
2)从末端追加元素,产生新数组


silce(start[,end]):截取数组元素对象,对原数组无影响     []可省略     


note:结束位不包含在范围


splice(start,num[,元素]):
1)截取数组元素,按个数获取,修改原数组
2)插入数组元素
3)替换




==========================================================================================
BOM(浏览器对象模型)


note:BOM兼容性有问题。


i:ie , F:firefox C:chrom
一、window对象
属性:
defaultStatus :默认状态栏信息 (I)
status :     自定义状态栏信息 (I)
opener :父级对象
screenLeft :浏览器水平坐标 (I,C)
screenX :同上 (C,F)
screenTop : 浏览器垂直坐标。
属性及方法:
print():调用打印命令。(IFC)
find():查找命令框   (F)
open("url"[,打开方式或窗口名称][,外观]):新建window对象
close():关闭window对象




----------------------------------
IE私有对象:
moveTo(x,y):移动到指定坐标点。
moveBy(x,y):参照当前位置位移。
resizeTo(): 更改到指定大小。
resizeTo(): 参照当前尺寸缩放


二、location对象


属性:
hash:#后
location.hash
moudle=welcome.WelcomeModule%7C%7B%7D


host:主机名+端口号
location.hostname
mail.126.com:80


prot:端口号
location.prot
80


href:完整的URL
location.href="http://www.qq.com"


*****search:?后
location.search


pathname:路径名


protocol:网络协议
location.protocol
http
https:加密的超文本协议


方法:
assign(url):加在新页面替换本页面
reload([False]):从本地缓存刷新页面(快,旧)
reload([true]):强制从服务器刷新页面==F5(新,慢)
replace(url):用地址替换当前地址




三、history:历史记录
属性:
length:当前窗体的历史记录


方法:
forward():前进一页
back():后退一页
go(num):跳转指定步数
正值:前进
负值:后退
0:刷新本页


四、navigator对象:返回浏览器信息
属性:                              
appCodeName:浏览器名称代码
appVersion:当前浏览器版本号             
appName:浏览器名字
cookieEnabled:电脑中的浏览器是否支持本地缓存     文件缓存   信息缓存
platfrom:当前系统平台                                   win32
方法:
javaEnabled():是否支持java     谷歌不支持支持简单的应用,火狐不支持  IE支持


五、screen对象:返回屏幕信息
width:
height :
availWidth:实际可用分辨率
availHeight:
colorDepth:判断颜色位数,一般都是24,IE=24+8(强调alpha)








补充:
一:open与close经典问题!
1.colse()无法关闭页面
close只能关闭open/脚本打开的页面


2.open传值
如果使用getElement系列方法时,要考虑加在顺序因素
note:谷歌chrome和苹果safari都为webkit内核,本地测试JS不准,除非在服务器状态下




五、screen对象 :返回屏幕信息




===========================================================
事件入门


事件:当用户操作软件时,所采取的一系列操作。


一、内联事件(内联模型) -慎用-
事件处理函数被当做HTML属性应用。


<input type="button" value="内联" onclick="javascript:alert('12346')">


优:直观


缺:违背了web标准,结构与行为混用




二、脚本事件(脚本模型)*****
优:实现web标准,便于维护,对象操作。


note:
1.对象.事件处理函数(onclick)=函数名;
2.对象.事件处理函数=function(){
        ...js代码块
}


三、事件处理函数
1.鼠标事件:
onclick    : 鼠标单击
ondblclick :鼠标双击 double click


onmousedown:鼠标摁下
onmouseup  :鼠标弹起


onmouseover:鼠标覆盖
onmouseout :鼠标移出


onmousemove:鼠标移动




2.键盘事件:
onkeydown :键盘任意键摁下
onkeypress:按任意字符键
onkeyup   :按键抬起


3.HTML事件
onload  :加载完毕
onunload:卸载完毕


onfocus :获得焦点
onblur  :失去焦点


onselect:选中文字时(单行或多行文本框)
onchange:值改变时  (同上)


onsubmit:表单提交时
onrest  :表单重置时
note:仅适用于<form>对象


onscroll:滚动条滚动时
onresize:窗口大小改变时
note:仅适用于window对象.


===================================
DOM(文档对象模型)---节点树


一、结点分类
1.元素结点 标签
2.属性结点 标签中的属性
2.文字结点 连续的字符串


二、获取结点的方法


1. .getElementById():唯一性
.tagName   :标签名
.id        :ID值
.innerHTML :元素节点中的内容
.className :类名
.style     :控制外观




2. .getElementsByTagName('标签名') :获取多个标签元素,返回数组集合


note:如要精确指向,必须配合数组下标。
.getElementsByTagNmae('标签名')[0]
.getElementsByTagName('标签名').Item(0)


3. .getElementsByName('name属性值')  :同ByTagName


4. .getAttrubute():获取属性结点


5. .setAttruibute('属性名','属性名') :设置属性节点


note:4.5ie7以下不支持


二、DOM节点关系(指针)


1.获取子节点 :childNodes  配合下标使用




2. .firstChild : 获取第一个节点   childNodes[0]


3. .lastChild  : 获取最后一个节点


4. .parentNode : 指向当前节点的父节点


5. .previousSibling: 上级节点


6. .nextsibling    : 下级节点 


7. .ownerDocument  : 指向根节点 ===document


8. .attributes : 指向当前节点的属性,返回数组对象




补充:


.nodeName


元素--标签名  属性---属性名 文本---#text


.nodeType


元素--1       属性--2       文本--3


.nodeValue


元素--NULL    属性--属性值  文本--字符串


*****note:
空字符串或换行都被chrome和FF认为是文字节点




三、节点操作  增,应用,删,复制,替换


1.新建节点
 1)document.write("<p>123</p>") :缺点:不稳定,在某些情况下,该方法输出会覆盖原有节点
 2) .createElement('标签名')




2.向某个节点末端追加节点 :appendChild('节点对象')


3.创建文本节点:  .createTextNode("连续字符串")


note:新建完的节点,都驻留在缓存中,因此要用插入方法插入到界面。




4. .insertBefore('节点对象','节点位置'):在节点位置前插入节点


5. .replaceChild('新节点','旧节点') : 替换子节点


6. .removeChild('节点') :删除子节点




note:5and6,要想实现自我操作,必须要将节点指针移到父节点上操作。


7. .cloneNode('bool') :复制节点


 true:包含子节点
 false:不包含子节点,只有结构


补充:
.hasChildNodes:判断是否包含子节点,返回布尔值

0 0
原创粉丝点击