網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了欒城免費建站歡迎大家使用!
html:超文本標記語言,網(wǎng)頁結(jié)構(gòu)層.
CSS:層疊樣式表,網(wǎng)頁的樣式.
Javascript:腳本語言,規(guī)定了網(wǎng)頁交互行為.
什么是JS?
JS是基于對象和事件驅(qū)動的解釋型腳本語言.
JS特點:
基于對象
:JS中萬物皆對象.JS中的任何內(nèi)容都由一個對象來描述.任何操作
都是由對象的方法(函數(shù))來進行描述.
事件
驅(qū)動:JS可以直接通過用戶的操作做出響應(yīng),而無需通過服務(wù)器響應(yīng).
解釋型腳本語言
JS的作用
頁面的交互
前端和后端的交互.–三節(jié)點–四階段
JS的歷史:
1995年,網(wǎng)景公司開發(fā)了第一款商用瀏覽器。
需要在瀏覽器設(shè)計一個專門用來做表單驗證的語言。布蘭登.愛奇
花了10天寫了第一個js版本。
之所以JS命名為javascript主要的原因:網(wǎng)景和sun公司合作關(guān)系,有因為java非?;穑盍隧橈L車,其名為javascript。
同年微軟開發(fā)了IE3.0,嵌入了克隆版的JS–JSript
.后期由于IE是windows內(nèi)置瀏覽器,后來網(wǎng)景就慢慢沒落最后到倒閉。
原來網(wǎng)景公司Mozilla團隊后來將瀏覽器內(nèi)核開源,開源之后他們成立了Mozilla組織,后期開發(fā)了火狐瀏覽器。
后來因為瀏覽器之爭,ECMA組織(歐洲計算機協(xié)會)組織各個計算廠商制定了JS的語法標準:ECMAScript
.
JS的組成:
ECMAScript:規(guī)定了JS語法標準和常用對象。
DOM:(document object model)文檔對象模型
基于對象和事件驅(qū)動的解釋型腳本語言.
特點:
基于對象
事件驅(qū)動
解釋型腳本語言.
2.js的組成有哪些?
ECMAScript:規(guī)定了JS的語法規(guī)范.
DOM:document object model 文檔對象模型
BOM:browser object model 瀏覽器對象模型.
3.請說出js的三種引入方式,請分別舉例闡述?
行內(nèi)引入:通過標簽的事件屬性引入
內(nèi)部引入:在script標簽的內(nèi)部引入js代碼
外部引入:
?
4.談?wù)勀銓Τ绦蛘{(diào)試的理解,可以使用那些方法調(diào)試程序?
程序調(diào)試:當程序運行時,用于檢測程序運行過程的一種方式.
1.alert():警告框
2.console.log():控制臺輸出數(shù)據(jù)
3.document.write():在文檔窗口中輸出(寫入數(shù)據(jù))
注意:正常文檔流中輸出可以正常顯示,文檔加載完輸出會替換原文檔內(nèi)容.
?
5.變量的聲明方式有哪些?并舉例說明?
1.先聲明后賦值
var a;
a =10;
2.聲明的同時賦值
var a = 10;
3.同時聲明多個變量
var a = 10,b=11,c = 12;
var a = 10,
b=11,
c = 12;
4.連等聲明:
var a = b = 10;
6.js數(shù)據(jù)類型是如何劃分的?
JS數(shù)據(jù)類型可以分為:
1.基本數(shù)據(jù)類型
number
整數(shù)
小數(shù)
負數(shù)
NaN:not a number (計算結(jié)果不是數(shù)值.)
infinity:無窮大
string
單引號或者雙引號包裹的內(nèi)容.
boolean
ture
false
null:空對象
undefined:聲明未賦值
2.復(fù)雜數(shù)據(jù)類型(引用數(shù)據(jù)類型)
Array:數(shù)組
object:對象
function:函數(shù)
7.如何查看字符串的長度,如何獲取字符串的對應(yīng)下標的字符。
str.length:查看長度
str.charAt(下標)
8.變量的作用和命名規(guī)則是什么?
1.只能是數(shù)字,字母,下劃線,$組成.
2.不能以數(shù)字開頭
3.不能是關(guān)鍵字和保留字.
4.建議使用小駝峰命名法.
5.區(qū)分大小寫.
6.不能重復(fù)聲明.重復(fù)聲明后面的會覆蓋前面的.
9.typeof的返回值有哪些?
typeof的作用是查看變量的數(shù)據(jù)類型.
格式:
typeof(變量)
typeof 變量
?
typeof返回值:
number-->number
字符串--->string
布爾類型--->boolean
null--->object
undefined-->undefined
1.除+號外,其他算數(shù)運算符在運算時默認將操作數(shù)轉(zhuǎn)為number,不能轉(zhuǎn),結(jié)果為NaN.
2.+兩邊只要出現(xiàn)了字符串,就是字符串的拼接操作.
如果字符串+基本數(shù)據(jù)類型:字符串拼接.
字符串+復(fù)雜類型:調(diào)用復(fù)雜類型的toString()獲取字符串格式,在和字符串拼接.
2.比較運算的隱式轉(zhuǎn)換規(guī)則有哪些?
1.默認轉(zhuǎn)為number進行比較.
2.字符串和字符串比較:按位比較ascii碼.
3.NaN和任何內(nèi)容比較的結(jié)果均為false.
3.==
和===
的區(qū)別?
==:比較的是值是否相等,會進行隱式轉(zhuǎn)換.
===:比較值和類型時候都相等,不會進行隱式轉(zhuǎn)換.
?
4.如何獲取dom元素,請寫出語法結(jié)構(gòu)。
1.通過dom對象獲取:
document.getElementById('id');
document.getElementsByClassName("class")
document.getElementsByTagName('tag')
2.通過父元素獲取:
parent.getElementsByClassName('class')
parent.getElementsByTagName('tag')
5.常見的鼠標事件有哪些,請分別寫出事件名稱及其含義。
1.onclick:鼠標的點擊事件
2.onmouseover:鼠標懸浮(移入)
3.onmouseout:鼠標移出
4.onmousemove:鼠標移動
5.onmousedown:鼠標按下
6.onmouseup:鼠標抬起
7.ondblclick:雙擊
8.oncontextmenu:右擊
6.如何強制轉(zhuǎn)數(shù)值類型,其規(guī)則有哪些?
轉(zhuǎn)換方法:
1.Number()
2.parseInt(字符串)/parseFloat(字符串)
?
規(guī)則:
1.字符串字面量為數(shù)值的正常轉(zhuǎn)為number,空串為0,其他為NaN.
2.布爾類型:true為1,false為0;
3.null和undefined轉(zhuǎn)number:null為0,undefined為NaN
4.復(fù)雜類型轉(zhuǎn)number,先調(diào)用復(fù)雜類型的toString(),再將字符串轉(zhuǎn)為number.
[]-->toString-->''--->0
{}--->[object Object]-->NaN
7.如何強制轉(zhuǎn)字符串,其規(guī)則有哪些?
轉(zhuǎn)換方法:
1.String()
2.對象.toString()
規(guī)則:
1.基本數(shù)據(jù)類型轉(zhuǎn)string,將數(shù)據(jù)兩邊用雙引號或單引號包裹即可.
2.復(fù)雜類型:
數(shù)組:
[]--->''
[1]--->'1'
[1,2]-->'1,2'
對象:[object Object]
8.如何強制轉(zhuǎn)布爾類型,其規(guī)則有哪些?
1.數(shù)值轉(zhuǎn)布爾:0和NaN為false,其他均為true;
2.字符串轉(zhuǎn)布爾:空串為false,其他均為true;
3.null和undefined轉(zhuǎn)布爾均為false.
4.復(fù)雜類型轉(zhuǎn)布爾均為true.
var oLis = document.getElementsByTagName("li");
?
for(var i = 0;i
2.請寫出for循環(huán)的語法格式,并說出其執(zhí)行流程。
循環(huán)的特征:
1.循環(huán)變量
2.循環(huán)的條件
3.循環(huán)體
4.更新循環(huán)變量的值.
?
for(初始化循環(huán)變量;循環(huán)的條件;更新循環(huán)變量的值.){
循環(huán)體
}
執(zhí)行流程:
1.初始化循環(huán)變量
2.判斷循環(huán)條件時候滿足,
滿足執(zhí)行循環(huán)體
不滿足結(jié)束循環(huán)
3.更新循環(huán)變量的值,繼續(xù)從第2步執(zhí)行.
?
3.分別寫出單分支,雙分支,多分支的語法結(jié)構(gòu).
1.單分支:
if(條件){
條件滿足執(zhí)行的代碼
}
?
2.雙分支
if(條件){
條件滿足執(zhí)行的代碼
}else{
條件不滿足執(zhí)行的代碼
}
3.多分支:
if(條件1){
條件1滿足執(zhí)行的代碼
}else if(條件2){
條件2滿足執(zhí)行的代碼
}...{
...
}else{
上述條件都不滿足執(zhí)行的代碼.
}
switch(匹配項){
case value1:匹配項=value1時執(zhí)行的代碼;break;
case value2:匹配項=value2時執(zhí)行的代碼;break;
case value3:匹配項=value3時執(zhí)行的代碼;break;
case value4:匹配項=value4時執(zhí)行的代碼;break;
...
default:上述情況都不匹配執(zhí)行的代碼;
?
}
4.如何操作DOM元素的內(nèi)容?
1.操作表單元素的內(nèi)容:
設(shè)置:元素.value = 新值
獲取:元素.value
2.操作閉合標簽的內(nèi)容:
設(shè)置:元素.innerHTML/innerText = "新值"
獲取:元素.innerHTML/innerText
注意:
(1)元素設(shè)置內(nèi)容會將原內(nèi)容替換掉.
(2)innerHTML獲取或者設(shè)置內(nèi)容是可以識別html標簽的.
(3)innerText只能獲取文本內(nèi)容,不能識別標簽.
5.如何操作DOM元素的屬性?
獲取:元素.屬性名
設(shè)置:元素.屬性名= 屬性值
注意:
(1)元素.屬性名只能獲取或者設(shè)置默認屬性,不能操作自定義屬性.
(2)操作class屬性要通過:元素.className
?
?
6.如何操作DOM元素的樣式?
設(shè)置樣式:元素.style.樣式名 = 樣式值
注意:
(1)樣式名如果是中劃線命名的,要改成小駝峰命名.
(2)設(shè)置的樣式作用在行內(nèi).
?
break:結(jié)束循環(huán)。
continue:結(jié)束本次循環(huán),繼續(xù)下一次循環(huán)。
2.什么是對象,對象如何獲取對象的屬性值,如何遍歷對象。
JS中的對象主要用來描述一個事物。一個事物可以有多個屬性和方法。
var obj = {
//對象的屬性
name:'zs',
age:10,
?
//對象的方法
study:function(){
?
}
}
?
獲取對象的屬性方法:
1.對象.屬性名:obj.name
2.對象['屬性名']:obj["name"]
?
遍歷對象:
for(var key in obj ){
//key:對象的屬性名
obj[key]:key所對應(yīng)的屬性值value。
}
?
3.什么是函數(shù),函數(shù)的作用是什么?
函數(shù)的定義:函數(shù)就是將`具有獨立功能的代碼塊`整合到一起并`命名`,需要的時候`調(diào)用`即可。
函數(shù)的作用:
(1)提高開發(fā)效率
(2)提高代碼的重用率。
4.函數(shù)聲明方式有幾種,分別寫出其語法結(jié)構(gòu)。
1.關(guān)鍵字聲明
function 函數(shù)名(){
?
}
2.表達式聲明:
var 函數(shù)名= function(){
?
}
5.函數(shù)的使用場景有哪些?
1.代碼復(fù)用
2.事件處理函數(shù)。
//事件一旦觸發(fā),就執(zhí)行函數(shù)中的代碼。(自動調(diào)用函數(shù)。)
//事件處理函數(shù),事件不觸發(fā)就不執(zhí)行。
oBtn.onclick = function(){
?
}
oBtn.onclick = show
function show(){
?
}
3.對象的方法。
var obj = {
//對象的屬性
name:'zs',
age:10,
?
//對象的方法
study:function(){
?
}
}
?
6.什么是形參,什么是實參。
形參:形式參數(shù),函數(shù)聲明時,寫在小括號中的參數(shù)。
function fun(a,b){
?
}
實參:實際參數(shù),函數(shù)調(diào)用時,實際傳遞的具體參數(shù)。
fun(10,15)
7.js中函數(shù)的參數(shù)在聲明函數(shù)和調(diào)用函數(shù)時都有哪些需要注意內(nèi)容?
1.函數(shù)參數(shù)的個數(shù)問題:
(1)一個參數(shù):聲明和調(diào)用時直接寫一個參數(shù)即可。
(2)多個確定的參數(shù):
聲明時,形參按照順序用逗號隔開依次寫到小括號中即可。
調(diào)用時,實參按照形參的順序依次的傳遞即可。
函數(shù)調(diào)用時:實參給形參一一賦值。
(3)參數(shù)個數(shù)不確定:
聲明時,形參可以不寫。在函數(shù)內(nèi)部使用arguments來接收所有的實參,并操作實參。
調(diào)用時,實參用逗號分隔傳遞即可。
?
function sumTotal(){
var s = 0;
for(var i = 0;i
1.函數(shù)的返回值:函數(shù)執(zhí)行所得的結(jié)果.
2.注意實現(xiàn):
(1)函數(shù)中需要使用return關(guān)鍵字返回返回值,函數(shù)外調(diào)用時可以使用變量接收該返回值.
function fn(){
return 1
}
var res = fn()
(2)函數(shù)執(zhí)行到return就直接結(jié)束函數(shù)執(zhí)行.
(3)函數(shù)沒有return任何內(nèi)容,默認返回undefined.
(4)函數(shù)一次只能return一個內(nèi)容.如果返回多個數(shù)據(jù),需要使用數(shù)組.
2.什么是函數(shù)封裝,函數(shù)封裝的步驟是什么?
1.函數(shù)封裝就是把一個或多個功能通過函數(shù)的方式封裝起來,對外只提供一個簡單的函數(shù)接口,通過調(diào)用這個函數(shù)就能復(fù)用封裝的功能.
2.封裝的步驟:
(1)確定函數(shù)名稱,見名知意
(2)確定函數(shù)的參數(shù),函數(shù)中不確定的內(nèi)容,或者需要傳入的內(nèi)容使用參數(shù)來表示.
(3)按照邏輯或者功能按步驟寫函數(shù)體.
(4)將需求結(jié)果使用return返回即可.
?
?
數(shù)據(jù)類型轉(zhuǎn)換:
Number()-->數(shù)組類型的對象.
String()
?
3.請寫出獲取非行間樣式的函數(shù)
function getStyle(elem,attr){
if(elem.currentStyle){
//IE
return elem.currentStyle[attr];
}else{
//標準
return getComputedStyle(elem)[attr];
}
}
4.this的作用有哪些?
this是函數(shù)中的一個特殊對象,在不同的函數(shù)中其指向不同.
1.普通函數(shù)中,指向window.
function fn(){}
2.事件處理函數(shù)中,指向觸發(fā)事件的元素.
oDiv.onclick = function(){}
3.對象的方法中,指向當前對象.
{name:zs,study:function(){}}
4.全局作用域下,指向window.
5.排他思想的實現(xiàn)思路是什么?
1.先清空所有相同元素的目標樣式.
2.誰觸發(fā)事件,就給誰添加目標樣式.
6.什么是開關(guān)效果,開關(guān)效果實現(xiàn)思路是什么?
開關(guān)效果的思路:
1.設(shè)置一個變量(狀態(tài)標識)記錄每種狀態(tài)。
2.判斷當前處于什么狀態(tài),就設(shè)置成對應(yīng)的狀態(tài),并修改狀態(tài)標識。
7.什么是作用域,什么是作用域鏈。js的作用域可以分為哪些?
1.作用域:變量或者是函數(shù)的作用范圍.
2.作用域可以分為:
全局作用域:整個script標簽或者最外層 的js代碼的位置.
局部作用域:函數(shù)內(nèi)部.
3.全局變量和局部變量:
全局變量:在全局作用域下定義的變量.
局部變量:在函數(shù)內(nèi)部定義變量.
關(guān)系:局部變量只能在函數(shù)內(nèi)部使用,全局變量可以在任意位置都可以使用.
?
4.作用域鏈:JS查找變量的規(guī)則
規(guī)則:先從當前作用域查找,如果不存在繼續(xù)向父級作用域查找,如果找到就直接用,找不到繼續(xù)向父級查找,直到找到全局作用域為止,如果還未找到就報錯:xx is not defined
8.什么是js的預(yù)解析(變量提升),及js的預(yù)解析過程是什么?
1.預(yù)解析是JS解釋器執(zhí)行JS代碼的一個步驟.
JS解釋器執(zhí)行JS代碼的步驟可以分為2步:
(1)預(yù)解析
(2)代碼從上往下解釋執(zhí)行.
?
2.預(yù)解析過程:
(1)在任何作用于下都有各自的預(yù)解析.
(2)預(yù)解析解析的目標對象:var出來的變量,和function關(guān)鍵聲明的函數(shù).
(3)預(yù)解析具體的處理方式:var出來的變量賦值為undefined,function聲明的函數(shù)賦值函數(shù)體,如果函數(shù)同名,保存最后的一個.
?
選項卡效果:一組選項和一組頁面相對應(yīng),點擊一個選項顯示相應(yīng)頁面.
1.分別獲取選項和對應(yīng)的頁面.
2.對選項進行循環(huán)事件綁定
3.給循環(huán)添加自定義屬性index,來標識每個選項下標.
4.在事件循環(huán)函數(shù)中通過this.index來確定操作的頁面的位置.
2.定時器有哪幾種,請分別寫出其語法,并說出他們之間的區(qū)別?
1.延時定時器:
語法:id = setTimeOut(函數(shù),延時時間)
作用:延時時間后調(diào)用一次函數(shù),只調(diào)用一次.
2.間歇定時器:
語法:id = setInterval(函數(shù),間歇時間)
作用:每隔間歇時間,調(diào)用一次函數(shù).可以無限調(diào)用.
?
3.停止定時器:
語法:clearInterval(id);
?
3.請寫出運動函數(shù)?
function move(elem,attr,step,target){
//1.清空定時器,避免定時器疊加.
clearInterval(elem.timer);
//2.判斷速度正負.
step = parseInt(getStyle(elem,attr))=target && step>0)||(cur<=target && step<0)){
cur = target;
clearInterval(elem.timer);
}
//(3)設(shè)置attr到elem
elem.style[attr] = cur+'px';
},30)
}
1.內(nèi)部對象
Number
String
Boolean
Object
Array
Function
?
Math
Global
?
Date
RegExp
Error
?
2.宿主對象
Dom
Bom
3.自定義對象
2.Math對象的方法都有哪些并說明其作用?
1.取整方法
Math.floor():下取整
Math.ceil():上取整
Math.round():四舍五入
2.隨機數(shù)
[0,1)隨機數(shù):Math.random()
[0,n]隨機數(shù):Math.floor(Math.random()*(n+1))
[m,n]隨機數(shù):Math.floor(Math.random()*(n-m+1)+m)
?
3.數(shù)學公式
Math.max(1,2,3,4,..)
Math.min(1,2,3,4,...)
Math.abs()
Math.sqrt():平方根
Math.pow(x,y):x^y
3.創(chuàng)建時間對象的方法有哪些?
1.系統(tǒng)時間:new Date()
2.自定義時間:
a.多個參數(shù):new Date(年,月-1,日,時,分,秒)
b.一個參數(shù):
new Date(‘年,月,日,時,分,秒’)
new Date(‘年-月-日,時,分,秒’)
new Date(‘年/月/日,時,分,秒’)
?
4.Date對象的方法有哪些?
oDate.getFullYear()
oDate.getMonth()
oDate.getDate()-獲取天
oDate.getDay()--獲取星期下標
oDate.getHours()--小時
oDate.getMinutes()--分鐘
oDate.getSeconds()--獲取秒
oDate.getTime()--時間戳
?
5.字符串對象的方法有哪些(11)?
1.字符串屬性
str.length
2.查找方法
str[下標]
str.charAt(下標)
str.charCodeAt(下標)
str.indexOf('字符串'):查看字符串在str中首次出現(xiàn)的下標,如果未找到返回-1
3.變形方法
str.toUpperCase()
str.toLowerCase()
4.截取方法
str.substring(start,end)
str.slice(start,end)
?
str.substr(start,length)
5.修改方法
str.replace(替換什么,用什么替換)
str.split('切分符號')
str.trim():去除兩邊空格
?
1.字面量創(chuàng)建
var arr = [1,2,3]
2.關(guān)鍵字new創(chuàng)建
var arr = new Array();//創(chuàng)建空數(shù)組
var arr = new Array(3);//長度為3的空數(shù)組.
var arr = new Array(1,2,3)//[1,2,3]
2.數(shù)據(jù)的添加元素的方法有哪些?
1.使用下標添加:
arr[i] = value;//給數(shù)組下標i的位置添加一個value.也有修改數(shù)組元素內(nèi)容的作用;
2.尾部添加和刪除:
arr.push(items);
arr.pop():尾部刪除一個元素,返回刪除的元素
3.頭部添加和刪除:
arr.unshift(items):頭部添加
arr.shift():頭部刪除一個元素返回
3.如何給數(shù)組去重?
1.比較刪除法:
var arr = [11,22,22,33,11];
for(var i =0;i
4.請寫出給一個數(shù)組使用選擇排序算法排序的代碼?
for(var i=0;iarr[j]){
minIndex = j;
}
}
//minIndex和i交換
var temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
5.請寫出給一個數(shù)組使用冒泡排序算法排序的代碼?
for(var i = 0;iarr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
6.已知數(shù)組var arr = [1,2,-4,6,0,9];如何對該數(shù)組元素進行隨機排序?
var arr = [1,2,-4,6,0,9];
arr.sort(function(a,b){
return Math.random()-0.5;
})
7.如何對數(shù)組中的對象排序,請用代碼舉例說明?
var arr = [
{name:'zs',age:18},
{name:'xx',age:20},
{name:'zz',age:19},
?
]
arr.sort(function(a,b){
returen a.age-b.age;//按照年齡從小到大.
})
8.統(tǒng)計一個字符串中某個字符出現(xiàn)的次數(shù)?并找出出現(xiàn)次數(shù)最多的字符?
var str = 'aafwafawf23j2i32inkl32jio23';
var obj = {}
for(var i = 0;imaxCount){
maxCount = obj[key];
maxChar = key;
}
}
maxChar:次數(shù)最多的字符
maxCount;最大重復(fù)次數(shù)
1.添加和刪除
arr.push(items):尾部添加
arr.pop():尾部刪除
arr.unshift(items):頭部添加
arr.shift():頭部刪除
2.splice方法:
arr.splice(start,deleteCount,items):從start開始刪除deletecount個元素,并用items替換.
deleteCount:如果不指定,默認刪除到結(jié)尾.
?
?
3.數(shù)組的其他方法:
arr.join("連接符"):將數(shù)組元素通過連接符拼接成一個字符串.
arr.reverse():反轉(zhuǎn)數(shù)組.
arr.concat(arr2,arr3):將數(shù)組拼接成一個新數(shù)組[arr,arr2,arr3]
arr.indexOf('元素'):判斷元素在數(shù)組中的下標,如果不存在返回-1
arr.slice(start,end):從start開始截取到end-1為止(包頭不包尾)
4.排序方法:
arr.sort(function(a,b){
return a-b//升序
return b-a//降序
})
2.正則對象的創(chuàng)建方法?正則修飾符有哪些?
字面量: /正則表達式/修飾符
關(guān)鍵字:new RegExp('正則表達式','修飾符')
?
修飾符:
1.g:全局匹配.
2.i:忽略大小寫
3.正則的匹配方法有哪些?
1.字符串的方法:
str,replace(regObj,用什么替換)
str.split(regObj)
str.search(regObj):查詢regObj匹配的內(nèi)容的下標,如果沒有找到返回-1
str.match(regObj):將正則匹配到的內(nèi)容提取出來.配合g修飾符可以全局查找提取.
2.正則對象方法:
regObj.test(str):查看正則對象時候匹配字符串,true為匹配,false為不匹配.
regObj.exec(str):檢索正則匹配到的內(nèi)容,返回一個數(shù)組.
4.請列舉出常見的元字符并說出他們的含義?
單個字符:
.:除換行符意外的任意字符.
[abc]:匹配a或b或c
[a-z]:匹配小寫字母
[^a-z]:匹配非小寫字母.
\d:數(shù)值0-9
\w:數(shù)字字母,下劃線
\s:空白字符(空格 ,換行\(zhòng)n,\t)
\b:單詞邊界
表示重復(fù)次數(shù):
?:重復(fù)0或1次
*:>=0
+:>=1
{n};重復(fù)n次
{n,m}:[n,m]
{n,}:>=n
5.DOM如何獲取子節(jié)點,并說出他們的區(qū)別?
parent.children :返回htmlcollection,獲取標簽子節(jié)點.
parent.childNodes:返回NodeList,可以獲取所有類型的子元素(文本節(jié)點,注釋節(jié)點,標簽節(jié)點)
6.DOM如何獲取父節(jié)點。
1.獲取直接父元素:子元素.parentNode
2.獲取定位父元素:子元素.offsetParent
7.DOM如何獲取兄弟節(jié)點?
1.首節(jié)點:parent.firstElementChild || parent.firstChild
2.尾節(jié)點:parent.lastElementChild || parent.lastChild
3.下一個兄弟: 參考節(jié)點.nextElementSibling || nextSilbing
4.上一個兄弟:參考節(jié)點.previousElementSibling || previousSilbing
?
?
8.如何通過css選擇器獲取元素?
document/parent.querySelector();獲取選擇器選中的第一個元素.
document/parent.querySelectorAll():獲取選擇器選中的所有元素.
9.如何創(chuàng)建一個標簽節(jié)點。
document.createElement("標簽名")
1.元素.屬性名操作屬性:
獲取:元素.屬性名
設(shè)置:元素.屬性名 = 屬性值
注意:只能操作默認屬性,操作自定義屬性怎么設(shè)置怎么獲取.
2.元素.getAttribute(屬性名):獲取屬性
注意:可以獲取任意屬性.
3.元素.setAttribute(屬性名,屬性值)
可以設(shè)置任意屬性.
4.元素.removeAttribute(屬性名)
2.DOM如何快速的獲取表格內(nèi)容,都有哪些方法。
第一步:獲取table標簽
第二步:通過table標簽屬性快速獲取其他表格元素.
oTab.tHead-表頭
oTab.tBodies:獲取所有的tbody
oTab.tFoot:獲取表的底部
oTab.tBodies[0].rows:獲取tbody的所有的行
oTab.tBodies[0].rows[0].cells:獲取tbody的第一行的所有單元格.
?
?
3.如何快速的獲取表單的input,form表單的事件分別有哪些,其作用是什么?
1.
第一步:獲取form標簽
第二步:通過form標簽.表單元素name屬性可以快速獲取所有的表單控件.
2.form的事件:
(1)onreset:重置事件,事件函數(shù)中返回true:允許重置,false:阻止重置.
(2)onsubmit:表單提交事件,事件函數(shù)中返回true:允許提交,false:阻止提交.
?
4.input表單控件的事件(5個)有哪些,請分別說明起作用。
onfocus:表單獲取光標觸發(fā).
onblur:表單失去光標
oninput:獲取焦點后,,當表單內(nèi)容發(fā)生變化時觸發(fā)(實時觸發(fā))
IE低版本不報錯,無效.
onpropertychange:獲取焦點后,當表單內(nèi)容發(fā)生變化時觸發(fā)(實時觸發(fā))
IE低版本有效.
onchange:失去焦點的時候輸入框內(nèi)容發(fā)生變化時觸發(fā)(當前內(nèi)容和上一次內(nèi)容比較)
5.什么是BOM,BOM的核心是什么,window和document的區(qū)別是什么?
BOM:broswer object model(瀏覽器對象模型)
BOM的核心是window,window是JS中最大的對象,所有全局變量和函數(shù)都屬于window,可以通過window.來調(diào)用,也可以省略window
window和document的區(qū)別:
1.window表示瀏覽器窗口對象,是JS最大的對象.是BOM的核心.
2.document表示文檔對象.是DOM的核心.
6.BOM的client系列有哪些屬性,并說明其作用。
元素.clientWidth:獲取可視寬 (content+padding)
元素.clientHeight:獲取可視高(content+padding)
獲取窗口的可視區(qū)寬高:
document.documentElement.clientWidth/clientHeight
7.BOM的offset系列有哪些屬性,并說明起作用?
1.獲取元素的占位寬高:
元素.offsetWidth/offsetHeight(content+padding+border)
2.獲取元素的位置:(獲取距離定位父元素的距離)
元素.offsetTop/offsetLeft
8.BOM的scroll系列有哪些屬性,并說明其作用?
1.獲取元素實際寬高:
元素.scrollWidth/scrollHeight
2.獲取被卷曲的高度:元素.scrollTop
3.獲取元素被卷曲的寬度:元素.scrollLeft
4.獲取頁面被卷曲的高度:
document.body.scrollTop || document.documentElement.scrollTop