主頁 > 企業開發 > JS初識

JS初識

2022-04-29 08:19:02 企業開發

  • 567網頁的組成:

    • html:超文本標記語言,網頁結構層.

    • CSS:層疊樣式表,網頁的樣式.

    • Javascript:腳本語言,規定了網頁互動行為.

  • 什么是JS?

    • JS是基于物件和事件驅動的解釋型腳本語言.

    • JS特點:

      • 基于物件:JS中萬物皆物件.JS中的任何內容都由一個物件來描述.任何操作都是由物件的方法(函式)來進行描述.

      • 事件驅動:JS可以直接通過用戶的操作做出回應,而無需通過服務器回應.

      • 解釋型腳本語言

         

  • JS的作用

    • 頁面的互動

    • 前端和后端的互動.–三節點–四階段

  • JS的歷史:

    • 1995年,網景公司開發了第一款商用瀏覽器,

    • 需要在瀏覽器設計一個專門用來做表單驗證的語言,布蘭登.愛奇花了10天寫了第一個js版本,

    • 之所以JS命名為javascript主要的原因:網景和sun公司合作關系,有因為java非常火,搭了順風車,其名為javascript,

    • 同年微軟開發了IE3.0,嵌入了克隆版的JS–JSript.后期由于IE是windows內置瀏覽器,后來網景就慢慢沒落最后到倒閉,

    • 原來網景公司Mozilla團隊后來將瀏覽器內核開源,開源之后他們成立了Mozilla組織,后期開發了火狐瀏覽器,

    • 后來因為瀏覽器之爭,ECMA組織(歐洲計算機協會)組織各個計算廠商制定了JS的語法標準:ECMAScript.

  • JS的組成:

    • ECMAScript:規定了JS語法標準和常用物件,

    • DOM:(document object model)檔案物件模型

    • BOM:(browser object model)瀏覽器物件模型

 

1.什么是js,js的特點是什么?

基于物件和事件驅動的解釋型腳本語言.
特點:
基于物件
事件驅動
解釋型腳本語言.

 

2.js的組成有哪些?

ECMAScript:規定了JS的語法規范.
DOM:document object model 檔案物件模型
BOM:browser object model 瀏覽器物件模型.

 

3.請說出js的三種引入方式,請分別舉例闡述?

行內引入:通過標簽的事件屬性引入
<div onclick="aleart(1)"></div>
內部引入:在script標簽的內部引入js代碼
<script>
`   alert(2);
</script>
外部引入:
<script src="https://www.cnblogs.com/yeziblogs/p/外部的js檔案.js"></script>
?

 

4.談談你對程式除錯的理解,可以使用那些方法除錯程式?

程式除錯:當程式運行時,用于檢測程式運行程序的一種方式.
1.alert():警告框
2.console.log():控制臺輸出資料
3.document.write():在檔案視窗中輸出(寫入資料)
    注意:正常檔案流中輸出可以正常顯示,檔案加載完輸出會替換原檔案內容.
?

 

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資料型別是如何劃分的?

JS資料型別可以分為:
1.基本資料型別
    number
    整數
     小數
     負數
     NaN:not a number (計算結果不是數值.)
        infinity:無窮大
 string
    單引號或者雙引號包裹的內容.
 boolean
        ture
     false
 null:空物件
    undefined:宣告未賦值
2.復雜資料型別(參考資料型別)
    Array:陣列
 object:物件
 function:函式

 

7.如何查看字串的長度,如何獲取字串的對應下標的字符,

str.length:查看長度
str.charAt(下標)

 

8.變數的作用和命名規則是什么?

1.只能是數字,字母,下劃線,$組成.
2.不能以數字開頭
3.不能是關鍵字和保留字.
4.建議使用小駝峰命名法.
5.區分大小寫.
6.不能重復宣告.重復宣告后面的會覆寫前面的.

 

9.typeof的回傳值有哪些?

typeof的作用是查看變數的資料型別.
格式:
typeof(變數)
typeof 變數
?
typeof回傳值:
number-->number
字串--->string
布爾型別--->boolean
null--->object
undefined-->undefined
 

1.算術運算的隱式轉換規則有哪些?

1.除+號外,其他算數運算子在運算時默認將運算元轉為number,不能轉,結果為NaN.
2.+兩邊只要出現了字串,就是字串的拼接操作.
    如果字串+基本資料型別:字串拼接.
 字串+復雜型別:呼叫復雜型別的toString()獲取字串格式,在和字串拼接.

 

2.比較運算的隱式轉換規則有哪些?

1.默認轉為number進行比較.
2.字串和字串比較:按位比較ascii碼.
3.NaN和任何內容比較的結果均為false.

 

3.=====的區別?

==:比較的是值是否相等,會進行隱式轉換.
===:比較值和型別時候都相等,不會進行隱式轉換.
?

 

4.如何獲取dom元素,請寫出語法結構,

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.如何強制轉數值型別,其規則有哪些?

轉換方法:
    1.Number()
    2.parseInt(字串)/parseFloat(字串)
?
規則:
1.字串字面量為數值的正常轉為number,空串為0,其他為NaN.
2.布爾型別:true為1,false為0;
3.null和undefined轉number:null為0,undefined為NaN
4.復雜型別轉number,先呼叫復雜型別的toString(),再將字串轉為number.
    []-->toString-->''--->0
    {}--->[object Object]-->NaN

 

7.如何強制轉字串,其規則有哪些?

轉換方法:
    1.String()
    2.物件.toString()
規則:
    1.基本資料型別轉string,將資料兩邊用雙引號或單引號包裹即可.
 2.復雜型別:
        陣列:
            []--->''
            [1]--->'1'
            [1,2]-->'1,2'
        物件:[object Object]

 

8.如何強制轉布爾型別,其規則有哪些?

1.數值轉布爾:0和NaN為false,其他均為true;
2.字串轉布爾:空串為false,其他均為true;
3.null和undefined轉布爾均為false.
4.復雜型別轉布爾均為true.
 

1.頁面有100個li標簽,如何給這些標簽系結回圈事件,請寫出具體的思路和步驟,(也可以用代碼表示)

var oLis = document.getElementsByTagName("li");
?
for(var i = 0;i<oLis.length;i++){
 oLis[i].onclick = function(){
?
 }
}

 

2.請寫出for回圈的語法格式,并說出其執行流程,

回圈的特征:
1.回圈變數
2.回圈的條件
3.回圈體
4.更新回圈變數的值.
?
for(初始化回圈變數;回圈的條件;更新回圈變數的值.){
 回圈體
}
執行流程:
1.初始化回圈變數
2.判斷回圈條件時候滿足,
 滿足執行回圈體
    不滿足結束回圈
3.更新回圈變數的值,繼續從第2步執行.
?

 

3.分別寫出單分支,雙分支,多分支的語法結構.

1.單分支:
if(條件){
 條件滿足執行的代碼
}
?
2.雙分支
if(條件){
    條件滿足執行的代碼
}else{
 條件不滿足執行的代碼
}
3.多分支:
if(條件1){
 條件1滿足執行的代碼
}else if(條件2){
  條件2滿足執行的代碼
}...{
 ...
}else{
 上述條件都不滿足執行的代碼.
}
switch(匹配項){
 case value1:匹配項=value1時執行的代碼;break;
 case value2:匹配項=value2時執行的代碼;break;
 case value3:匹配項=value3時執行的代碼;break;
 case value4:匹配項=value4時執行的代碼;break;
 ...
 default:上述情況都不匹配執行的代碼;
?
}

 

4.如何操作DOM元素的內容?

1.操作表單元素的內容:
    設定:元素.value = https://www.cnblogs.com/yeziblogs/p/新值
    獲取:元素.value
2.操作閉合標簽的內容:
    設定:元素.innerHTML/innerText ="新值"
    獲取:元素.innerHTML/innerText
    注意:
    (1)元素設定內容會將原內容替換掉.
 (2)innerHTML獲取或者設定內容是可以識別html標簽的.
 (3)innerText只能獲取文本內容,不能識別標簽.

 

5.如何操作DOM元素的屬性?

獲取:元素.屬性名
設定:元素.屬性名= 屬性值
注意:
    (1)元素.屬性名只能獲取或者設定默認屬性,不能操作自定義屬性.
 (2)操作class屬性要通過:元素.className
?
?

 

6.如何操作DOM元素的樣式?

設定樣式:元素.style.樣式名 = 樣式值
注意:
(1)樣式名如果是中劃線命名的,要改成小駝峰命名.
(2)設定的樣式作用在行內.
?

1.break和continue的作用?

break:結束回圈,
continue:結束本次回圈,繼續下一次回圈,

 

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所對應的屬性值value,
}
?

 

3.什么是函式,函式的作用是什么?

函式的定義:函式就是將`具有獨立功能的代碼塊`整合到一起并`命名`,需要的時候`呼叫`即可,
函式的作用:
(1)提高開發效率
(2)提高代碼的重用率,

 

4.函式宣告方式有幾種,分別寫出其語法結構,

1.關鍵字宣告
function 函式名(){
?
}
2.運算式宣告:
var 函式名= function(){
?
}

 

5.函式的使用場景有哪些?

1.代碼復用
2.事件處理函式,
//事件一旦觸發,就執行函式中的代碼,(自動呼叫函式,)
//事件處理函式,事件不觸發就不執行,
oBtn.onclick = function(){
?
}
oBtn.onclick = show
function show(){
?
}
3.物件的方法,
var obj = {
 //物件的屬性
 name:'zs',
 age:10,
?
 //物件的方法
 study:function(){
?
 }
}
?

 

6.什么是形參,什么是實參,

形參:形式引數,函式宣告時,寫在小括號中的引數,
function fun(a,b){
?
}
實參:實際引數,函式呼叫時,實際傳遞的具體引數,
fun(10,15)

 

7.js中函式的引數在宣告函式和呼叫函式時都有哪些需要注意內容?

1.函式引數的個數問題:
(1)一個引數:宣告和呼叫時直接寫一個引數即可,
(2)多個確定的引數:
    宣告時,形參按照順序用逗號隔開依次寫到小括號中即可,
    呼叫時,實參按照形參的順序依次的傳遞即可,
 函式呼叫時:實參給形參一一賦值,
(3)引數個數不確定:
    宣告時,形參可以不寫,在函式內部使用arguments來接收所有的實參,并操作實參,
 呼叫時,實參用逗號分隔傳遞即可,
?
 function sumTotal(){
     var s = 0;
     for(var i = 0;i<arguments.length;i++){
         s+=arguments[i];
     }
?
 }
sumTotal(1,2)
sumTotal(1,2,3)
sumTotal(1,2,3,4)
?
2.引數賦值的問題:
(1)實參和形參個數相等:實參給形參11賦值,
(2)實參比形參多:多余的實參忽略,
(3)形參比實參多:多余的形參的值為undefined,
?
3.引數的型別問題:JS所有的屬性型別都可以作為函式的引數,不用顯示宣告函式的形參的資料型別,實參時什么型別,形參就是什么型別,
?
?

1.關于函式的回傳值,你的理解是什么?且函式的回傳值都有哪些注意的內容,

1.函式的回傳值:函式執行所得的結果.
2.注意實作:
    (1)函式中需要使用return關鍵字回傳回傳值,函式外呼叫時可以使用變數接收該回傳值.
 function fn(){
        return 1
 }
    var res = fn()
 (2)函式執行到return就直接結束函式執行.
 (3)函式沒有return任何內容,默認回傳undefined.
 (4)函式一次只能return一個內容.如果回傳多個資料,需要使用陣列.

 

2.什么是函式封裝,函式封裝的步驟是什么?

1.函式封裝就是把一個或多個功能通過函式的方式封裝起來,對外只提供一個簡單的函式介面,通過呼叫這個函式就能復用封裝的功能.
2.封裝的步驟:
(1)確定函式名稱,見名知意
(2)確定函式的引數,函式中不確定的內容,或者需要傳入的內容使用引數來表示.
(3)按照邏輯或者功能按步驟寫函式體.
(4)將需求結果使用return回傳即可.
?
?
資料型別轉換:
Number()-->陣列型別的物件.
String()
?

 

3.請寫出獲取非行間樣式的函式

function getStyle(elem,attr){
 if(elem.currentStyle){
     //IE
     return elem.currentStyle[attr];
 }else{
     //標準
     return getComputedStyle(elem)[attr];
 }
}

 

4.this的作用有哪些?

this是函式中的一個特殊物件,在不同的函式中其指向不同.
1.普通函式中,指向window.
function fn(){}
2.事件處理函式中,指向觸發事件的元素.
oDiv.onclick = function(){}
3.物件的方法中,指向當前物件.
{name:zs,study:function(){}}
4.全域作用域下,指向window.

 

5.排他思想的實作思路是什么?

1.先清空所有相同元素的目標樣式.
2.誰觸發事件,就給誰添加目標樣式.

 

6.什么是開關效果,開關效果實作思路是什么?

開關效果的思路:
1.設定一個變數(狀態標識)記錄每種狀態,
2.判斷當前處于什么狀態,就設定成對應的狀態,并修改狀態標識,

 

7.什么是作用域,什么是作用域鏈,js的作用域可以分為哪些?

1.作用域:變數或者是函式的作用范圍.
2.作用域可以分為:
全域作用域:整個script標簽或者最外層 的js代碼的位置.
區域作用域:函式內部.
3.全域變數和區域變數:
全域變數:在全域作用域下定義的變數.
區域變數:在函式內部定義變數.
關系:區域變數只能在函式內部使用,全域變數可以在任意位置都可以使用.
?
4.作用域鏈:JS查找變數的規則
規則:先從當前作用域查找,如果不存在繼續向父級作用域查找,如果找到就直接用,找不到繼續向父級查找,直到找到全域作用域為止,如果還未找到就報錯:xx is not defined

 

8.什么是js的預決議(變數提升),及js的預決議程序是什么?

1.預決議是JS解釋器執行JS代碼的一個步驟.
JS解釋器執行JS代碼的步驟可以分為2步:
(1)預決議
(2)代碼從上往下解釋執行.
?
2.預決議程序:
(1)在任何作用于下都有各自的預決議.
(2)預決議決議的目標物件:var出來的變數,和function關鍵宣告的函式.
(3)預決議具體的處理方式:var出來的變數賦值為undefined,function宣告的函式賦值函式體,如果函式同名,保存最后的一個.
?
 

1.什么是選項卡效果,選項卡效果如何實作?

選項卡效果:一組選項和一組頁面相對應,點擊一個選項顯示相應頁面.
1.分別獲取選項和對應的頁面.
2.對選項進行回圈事件系結
3.給回圈添加自定義屬性index,來標識每個選項下標.
4.在事件回圈函式中通過this.index來確定操作的頁面的位置.

2.定時器有哪幾種,請分別寫出其語法,并說出他們之間的區別?

1.延時定時器:
語法:id = setTimeOut(函式,延時時間)
作用:延時時間后呼叫一次函式,只呼叫一次.
2.間歇定時器:
語法:id = setInterval(函式,間歇時間)
作用:每隔間歇時間,呼叫一次函式.可以無限呼叫.
?
3.停止定時器:
語法:clearInterval(id);
?

 

3.請寫出運動函式?

function move(elem,attr,step,target){
 //1.清空定時器,避免定時器疊加.
 clearInterval(elem.timer);
 //2.判斷速度正負.
 step = parseInt(getStyle(elem,attr))<target?step:-step;
 //設定定時器運動
  elem.timer = setInterval(function(){
     //(1)獲取當前attr+step
     var cur = parseInt(getStyle(elem,attr))+step;
     //(2)判斷終點
     if((cur>=target && step>0)||(cur<=target && step<0)){
         cur = target;
         clearInterval(elem.timer);
     }
     //(3)設定attr到elem
     elem.style[attr] = cur+'px';
 },30)
}
 

1.JS的物件可以分為哪些類,并列舉出常見的物件,

1.內部物件
    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.亂數
    [0,1)亂數:Math.random()
    [0,n]亂數:Math.floor(Math.random()*(n+1))
    [m,n]亂數:Math.floor(Math.random()*(n-m+1)+m)
?
3.數學公式
    Math.max(1,2,3,4,..)
    Math.min(1,2,3,4,...)
 Math.abs()
    Math.sqrt():平方根
 Math.pow(x,y):x^y

 

3.創建時間物件的方法有哪些?

1.系統時間:new Date()
2.自定義時間:
    a.多個引數:new Date(年,月-1,日,時,分,秒)
    b.一個引數:
        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中首次出現的下標,如果未找到回傳-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.陣列的創建方法有哪些?

1.字面量創建
var arr = [1,2,3]
2.關鍵字new創建
var arr = new Array();//創建空陣列
var arr = new Array(3);//長度為3的空陣列.
var arr = new Array(1,2,3)//[1,2,3]

 

2.資料的添加元素的方法有哪些?

1.使用下標添加:
arr[i] = value;//給陣列下標i的位置添加一個value.也有修改陣列元素內容的作用;
2.尾部添加和洗掉:
arr.push(items);
arr.pop():尾部洗掉一個元素,回傳洗掉的元素
3.頭部添加和洗掉:
arr.unshift(items):頭部添加
arr.shift():頭部洗掉一個元素回傳

 

3.如何給陣列去重?

1.比較洗掉法:
var arr = [11,22,22,33,11];
for(var i =0;i<arr.length-1;i++){
 for(var j=i+1;j<arr.length;j++){
     if(arr[i]==arr[j]){
        arr.splice(j,1);
         j--;
     }
 }
}
?
2.比較存盤法
var newArr = [];
for(var i =0;i<arr.length;i++){
 if(newArr.indexOf(arr[i])==-1){
     newArr.push(arr[i]);
 }
}

 

4.請寫出給一個陣列使用選擇排序演算法排序的代碼?

for(var i=0;i<arr.length-1;i++){
 var minIndex = i;
 for(var j=i+1;j<arr.length;j++){
     if(arr[minIndex]>arr[j]){
         minIndex = j;
     }
 }
 //minIndex和i交換
 var temp = arr[i];
 arr[i] = arr[minIndex];
 arr[minIndex] = temp;
}

 

5.請寫出給一個陣列使用冒泡排序演算法排序的代碼?

for(var i = 0;i<arr.length-1;i++){
 for(var j=0;j<arr.length-i-1;j++){
     if(arr[j]>arr[j+1]){
         var temp = arr[j];
         arr[j] = arr[j+1];
         arr[j+1] = temp;
     }
 }
}

 

6.已知陣列var arr = [1,2,-4,6,0,9];如何對該陣列元素進行隨機排序?

var arr = [1,2,-4,6,0,9];
arr.sort(function(a,b){
 return Math.random()-0.5;
})

 

7.如何對陣列中的物件排序,請用代碼舉例說明?

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.統計一個字串中某個字符出現的次數?并找出出現次數最多的字符?

var str = 'aafwafawf23j2i32inkl32jio23';
var obj = {}
for(var i = 0;i<str.length;i++){
 var count = str.split(str[i]).length-1;
 var char = str[i];
 obj[char] = count;
}
//找到value最大的key
var maxCount = 0;
var manChar;
for(var key in obj){
 if(obj[key]>maxCount){
     maxCount = obj[key];
     maxChar = key;
 }
}
maxChar:次數最多的字符
maxCount;最大重復次數
 

1.陣列的常用方法有哪些(10)?

1.添加和洗掉
    arr.push(items):尾部添加
    arr.pop():尾部洗掉
arr.unshift(items):頭部添加
arr.shift():頭部洗掉
2.splice方法:
    arr.splice(start,deleteCount,items):從start開始洗掉deletecount個元素,并用items替換.
        deleteCount:如果不指定,默認洗掉到結尾.
?
?
3.陣列的其他方法:
    arr.join("連接符"):將陣列元素通過連接符拼接成一個字串.
arr.reverse():反轉陣列.
arr.concat(arr2,arr3):將陣列拼接成一個新陣列[arr,arr2,arr3]
    arr.indexOf('元素'):判斷元素在陣列中的下標,如果不存在回傳-1
    arr.slice(start,end):從start開始截取到end-1為止(包頭不包尾)
4.排序方法:
    arr.sort(function(a,b){
     return a-b//升序
     return b-a//降序
 })

 

2.正則物件的創建方法?正則修飾符有哪些?

字面量: /正則運算式/修飾符
關鍵字:new RegExp('正則運算式','修飾符')
?
修飾符:
1.g:全域匹配.
2.i:忽略大小寫 

 

3.正則的匹配方法有哪些?

1.字串的方法:
    str,replace(regObj,用什么替換)
    str.split(regObj)
    str.search(regObj):查詢regObj匹配的內容的下標,如果沒有找到回傳-1
    str.match(regObj):將正則匹配到的內容提取出來.配合g修飾符可以全域查找提取.
2.正則物件方法:
    regObj.test(str):查看正則物件時候匹配字串,true為匹配,false為不匹配.
 regObj.exec(str):檢索正則匹配到的內容,回傳一個陣列.

 

4.請列舉出常見的元字符并說出他們的含義?

單個字符:
    .:除換行符意外的任意字符.
 [abc]:匹配a或b或c
 [a-z]:匹配小寫字母
    [^a-z]:匹配非小寫字母.
 \d:數值0-9
    \w:數字字母,下劃線
    \s:空白字符(空格&nbsp;,換行\n,\t)
    \b:單詞邊界
表示重復次數:
    ?:重復0或1次
 *:>=0
    +:>=1
    {n};重復n次
 {n,m}:[n,m]
    {n,}:>=n

 

5.DOM如何獲取子節點,并說出他們的區別?

parent.children :回傳htmlcollection,獲取標簽子節點.
parent.childNodes:回傳NodeList,可以獲取所有型別的子元素(文本節點,注釋節點,標簽節點)

 

6.DOM如何獲取父節點,

1.獲取直接父元素:子元素.parentNode
2.獲取定位父元素:子元素.offsetParent

 

7.DOM如何獲取兄弟節點?

1.首節點:parent.firstElementChild || parent.firstChild
2.尾節點:parent.lastElementChild || parent.lastChild
3.下一個兄弟: 參考節點.nextElementSibling || nextSilbing
4.上一個兄弟:參考節點.previousElementSibling || previousSilbing
?
?

 

8.如何通過css選擇器獲取元素?

document/parent.querySelector();獲取選擇器選中的第一個元素.
document/parent.querySelectorAll():獲取選擇器選中的所有元素.

 

9.如何創建一個標簽節點,

document.createElement("標簽名")
 

1.DOM的屬性操作有哪些方法,并說明其作用?

1.元素.屬性名操作屬性:
    獲取:元素.屬性名
    設定:元素.屬性名 = 屬性值
    注意:只能操作默認屬性,操作自定義屬性怎么設定怎么獲取.
2.元素.getAttribute(屬性名):獲取屬性
    注意:可以獲取任意屬性.
3.元素.setAttribute(屬性名,屬性值)
    可以設定任意屬性.
4.元素.removeAttribute(屬性名)

 

2.DOM如何快速的獲取表格內容,都有哪些方法,

第一步:獲取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:重置事件,事件函式中回傳true:允許重置,false:阻止重置.
(2)onsubmit:表單提交事件,事件函式中回傳true:允許提交,false:阻止提交.
?

 

4.input表單控制元件的事件(5個)有哪些,請分別說明起作用,

onfocus:表單獲取游標觸發.
onblur:表單失去游標
oninput:獲取焦點后,,當表單內容發生變化時觸發(實時觸發)
    IE低版本不報錯,無效.
onpropertychange:獲取焦點后,當表單內容發生變化時觸發(實時觸發)
    IE低版本有效.
onchange:失去焦點的時候輸入框內容發生變化時觸發(當前內容和上一次內容比較)

 

5.什么是BOM,BOM的核心是什么,window和document的區別是什么?

BOM:broswer object model(瀏覽器物件模型)
BOM的核心是window,window是JS中最大的物件,所有全域變數和函式都屬于window,可以通過window.來呼叫,也可以省略window
window和document的區別:
1.window表示瀏覽器視窗物件,是JS最大的物件.是BOM的核心.
2.document表示檔案物件.是DOM的核心.

 

6.BOM的client系列有哪些屬性,并說明其作用,

元素.clientWidth:獲取可視寬 (content+padding)
元素.clientHeight:獲取可視高(content+padding)
獲取視窗的可視區寬高:
    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 

 

9.DOM創建節點,洗掉節點,添加節點,替換和復制節點的方法分別是什么?(DOM操作節點的方法)(7)

1.獲取節點:通過id獲取------document.getElementById()
       通過class獲取---document/parent.getElementByClassName()
      通過標簽名獲取---document/parent.getElementByTagName()
      通過CSS選擇器獲取---document/parent.querySelector()
                  documnet/parentquerySelectorAll()
      獲取子節點:---parent.children---獲取標簽子元素
                       ---回傳HtmlCollection
              parent.childNodes---獲取所有型別的子元素
                        ---回傳NodeList
      獲取父元素  直接父元素---child.parentNode
             定位父元素---child.offsetParent
      獲取兄弟節點  第一個兄弟節點---parent.firstElementChild||parent.firstChild
             最后一個兄弟節點--parent.lastElementChild||parent.lastChild
             下一個兄弟----refChild.nextElementSibling||refChild.nextSibling
             上一個兄弟----refChild.previousElementSibling||refChild.previousSibling

2.操作節點    創建節點---document.createElement("tagName")
          添加節點:  追加末尾----parent.appendChild(子元素)
                前面插入元素---parent.insertBefore(newChild,refChild)
         洗掉節點:   洗掉自身---元素.removed()
                洗掉子元素---父元素.removeChild(子元素)
         替換節點:    parent.repaceChild(newChild,refChild)
         復制節點:  被復制的節點:cloneNode(boolean)   boolean=true---復制標簽和內容
                                    boolean=false---復制標簽---默認
3.操作節點屬性  標簽.屬性名
         getAttribute
         setAttribute
         removeAttribute
4.操作節點內容  innnerHTML
         innerText
5.操作節點的樣式  設定樣式---標簽.style.樣式名=樣式值
          獲取樣式:function getStyle(elem,attr){
                  if(elem.currenStyle){
                    return elem.currenStyle[arrt]
                    }else{
                        getComputedStyle(elem)[arrt]
                      }
                   }

1.什么是事件物件,如何獲取事件物件?

事件物件是事件函式中的特殊物件,瀏覽器會將和事件相關的資訊放到事件物件中.
獲取事件物件:
1.事件處理函式的第一個引數就是事件物件.
2.window.event(window可以省略)
var e = window.event || e;

 

2.如何系結事件,兼容寫法是什么?如何封裝一個系結事件的函式,

1.標準:
元素.addEventListener(事件型別,事件處理函式)
2.IE:
元素.attachEvent(on事件型別,事件處理函式.)
兼容:
if(元素.attachEvent){
 元素.attachEvent(on事件型別,事件處理函式.)
}else{
 元素.addEventListener(事件型別,事件處理函式)
}
?
函式封裝:
function bindEventListener(elem,etype,fn){
 if(elem.attachEvent){
    elem.attachEvent('on'+etype,fn.)
 }else{
     elem.addEventListener(etype,fn)
 }
}

 

3.如何解綁事件,兼容寫法是什么?如何封裝一個取消系結事件的函式,

1.標準:
元素.removeEventListener(事件型別,事件處理函式)
2.IE:
元素.detachEvent(on事件型別,事件處理函式.)
兼容:
if(元素.detachEvent){
 元素.detachEvent(on事件型別,事件處理函式.)
}else{
 元素.removeEventListener(事件型別,事件處理函式)
}
?
函式封裝:
function unbindEventListener(elem,etype,fn){
 if(elem.detachEvent){
    elem.detachEvent('on'+etype,fn.)
 }else{
     elem.removeEventListener(etype,fn)
 }
}

 

4.什么是事件流,事件流分為哪些階段,并說明這些階段的程序,

事件流:瀏覽器決議執行事件的程序.事件流可以分為捕獲和冒泡階段.
事件的執行:
(1)確定事件目標
(2)事件傳遞
捕獲階段:當事件發生時,從window依次先事件目標(e.target)傳遞,如果某個元素由相同型別的事件,就觸發,直到傳遞到事件目標為止.
冒泡階段:當事件發生時,從事件目標開始依次先父元素傳遞的程序,如果某個元素由相同型別的事件,就觸發,直到傳遞到window為止.

 

5.如何阻止事件冒泡?

1.獲取事件物件
var e = window.event||e;
2.阻止冒泡:
(1)標準:e.stopPropagation()
(2)IE:e.cancelBubble = true;

6.如何阻止默認行為?

默認行為:
    a標簽默認跳轉
 img拖拽默認保存
 button在form默認提交
 右鍵默認選單.
?
1.元素.on事件型別系結事件,通過事件函式中return false;
a.onclick = function(){
?
 return false;//阻止默認行為
}
2.通過事件物件阻止默認行為:
    標準:e.preventDefault();
    IE:e.returnValue = https://www.cnblogs.com/yeziblogs/p/false;

 

本文來自博客園,作者:葉子dada,轉載請注明原文鏈接:https://www.cnblogs.com/yeziblogs/p/16203698.html

對溫床的眷戀,對過去的沉溺,容易讓人產生一種好像什么都晚了的錯覺,有沒有勇氣去追尋自己想要的生活,與你是幾歲都沒有關系,任何時間都是及時的,年輕的,能有所為的

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/467056.html

標籤:JavaScript

上一篇:javascript生成一棵樹

下一篇:JavaScript學習筆記

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more