js基礎(chǔ)知識:基于ECMA 262標(biāo)準(zhǔn)(規(guī)定基礎(chǔ)語法七扰、規(guī)則)
--變量類型和計(jì)算
--原型和原型鏈
--閉包和作用域
--異步和單線程
--其他(如日期没龙、Math铺厨、各種常用API)
特點(diǎn):表面看來并不能用于工作中開發(fā)代碼
內(nèi)置函數(shù):Object Array Boolean String...
內(nèi)置對象:Math JSON...
js-web-API:基于W3C標(biāo)準(zhǔn)(在規(guī)則上怎么用)
w3c標(biāo)準(zhǔn)中關(guān)于JS的規(guī)定有:
--DOM操作(增刪改查,修改網(wǎng)頁的結(jié)構(gòu)硬纤,頁面的動(dòng)態(tài)效果)
--BOM操作(獲取瀏覽器特性解滓、當(dāng)前屏幕尺寸寬高、當(dāng)前地址欄地址)
--事件綁定(click筝家,keyon洼裤,mouseenter,mouseup等)
--ajax請求(包括http協(xié)議)
--存儲
瀏覽器即要遵循瀏覽器對js的運(yùn)行的定義溪王,又要遵循ECMA262腮鞍,又要遵循w3c標(biāo)準(zhǔn)值骇。
1.頁面彈框是 window.alert(123);,瀏覽器需要做:
--定義一個(gè)window全局變量,對象類型
--給它定義一個(gè)alert屬性移国,屬性值是一個(gè)函數(shù)
2.獲取元素document.getElementById(id);瀏覽器需要:
--定義一個(gè)document全局變量吱瘩,對象類型
--給它定義一個(gè)getElementById的屬性,屬性值是一個(gè)函數(shù)
3.W3C標(biāo)準(zhǔn)沒有規(guī)定任何Js基礎(chǔ)相關(guān)的東西
--不管什么變量類型迹缀、原型使碾、作用域和異步(ECMA 262)
--只管定義用于瀏覽器中JS操作頁面的API和全局變量
4.js內(nèi)置的全局函數(shù)和對象有哪些:(可以拿來直接用的)
--之前講過的 Object Array Boolean String Math JSON等
--剛剛提到的 window document
--未定義的全局變量,如:navigator.userAgent
5.常說的JS(瀏覽器執(zhí)行的JS)包含兩部分:
--JS基礎(chǔ)知識(**ECMA262標(biāo)準(zhǔn)**)
--JS-Web-API(**W3C標(biāo)準(zhǔn)**)
/--------------DOM操作--------------
Document Object Model
1.DOM是哪種基本的數(shù)據(jù)結(jié)構(gòu)裹芝?
--樹
2.DOM操作的常用API有哪些部逮?
--獲取DOM節(jié)點(diǎn),以及節(jié)點(diǎn)的property和Attribute
--獲取父節(jié)點(diǎn)嫂易,獲取子節(jié)點(diǎn)
--新增節(jié)點(diǎn)兄朋,刪除節(jié)點(diǎn)
3.DOm節(jié)點(diǎn)的attr和property有何區(qū)別?
--property只是一個(gè)JS對象的屬性的修改
--Attribute是對html標(biāo)簽屬性的修改
1怜械、DOM的本質(zhì)
(瀏覽器把拿到的html代碼颅和,結(jié)構(gòu)化成瀏覽器可識別、js可操作的一個(gè)模型而已)
--XML可擴(kuò)展的描述語言缕允,可以描述任何結(jié)構(gòu)化的數(shù)據(jù)
樹峡扩,有一個(gè)主干,有很多分支障本,分支在有分支教届;
<?xml version="1.0" encoding="UTF-8">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<boby>Don't forget me this weekend!</body>
<other>
<a></a>
<b></b>
</other>
</note>
--html是XML的一種特殊類型,是一種特殊結(jié)構(gòu)驾霜,和XML一樣的規(guī)則
<!DOCTYPE html>
<html>
<head>
<meta charset ="UTF-8">
<title>Document</title>
</head>
<body>
<div>
<p>this is p!</p>
</div>
</body>
</html>
2案训、DOM節(jié)點(diǎn)操作
--獲取DOM節(jié)點(diǎn)
var div1 = document.getElementById('div1');//元素
var divList =document.getElementsByTagName('div'); //集合
console.log(divList.length);
console.log(divList[0]);
var containerList = document.getElementsByClassName('.container');//集合
var pList = document.querySelectorAll('p');//集合
--property(改的是js對象的一個(gè)標(biāo)準(zhǔn)屬性)
eg:1.
var pList = document.querselectorAll('p');
var p = pList[0];
console.log(p.style.width); //獲取樣式
p.style.width = '100px'; //修改樣式
console.log(p.className); //獲取class
p.className = 'p1'; //修改class
//獲取nodeName 和 nodeType
console.log(p.nodeName);
console.log(p.nodeType);
eg:2.
x是obj的一個(gè)property
var obj = {x:100,y:200};
console.log(obj.x); // 100
nodeName是p的一個(gè)property
var p = document.getElementsByTagName('p')[0];
console.log(p.nodeName); // P
// property
var div = document.getElementById('div1');
console.log(div1.className);
div1.className = 'abc';
console.log(div1.className);
--Attribute(改的html代碼文檔里面的標(biāo)簽的屬性)
var pList = document.queryselectorAll('p');
var p = pList[0];
p.getAttribute('data-name');
p.setAttribute('data-name','imocc');
p.getAttribute('style');
p.setAttribute('style','font-size:30px');
3、DOM結(jié)構(gòu)操作(樹結(jié)構(gòu))
--新增節(jié)點(diǎn)
var div1 = document.getElementById('div1');
//添加新節(jié)點(diǎn)
var p1= document.createElement('p');
p1.innerHTML = 'this is p1';
div1.appendChild(p1); //添加新創(chuàng)建的元素
//移動(dòng)已有的節(jié)點(diǎn)
var p2 = document.getElementById('p2');
div1.appendChild(p2);
--獲取父元素
--獲取子元素
--刪除節(jié)點(diǎn)
var div1 = document.getElementById('div1');
var parent = div1.parentElement;
var child = div1.childNodes;
console.log(child[0].nodeType); // text 3
console.log(child[1].nodeType); // div 1
console.log(child[0].nodeName); // text #text
console.log(child[1].nodeName; // div div
div1.removeChild(child[1]);
/---------------BOM的操作--------------------
Browser Object Model 瀏覽器對象模型
1.如何檢測瀏覽器的類型
2.拆解url的各部分
1.navigator
2.screen
3.location
4.history
eg:1粪糙、navigator & screen
//navigator
var ua = navigator.userAgent;
var isChrome = ua.indexOf('chrome');
console.log(isChrome);
//screen
console.log(screen.width);
console.log(screen.height);
2.location & history
//location
console.log(location.href); //獲取頁面的地址
location.; //修改頁面的地址
console.log(location.protocol); //協(xié)議 'http:' 'https:'
console.log(location.host); //域名 'www.baidu.com'
console.log(location.pathname); //路徑 '/learn/199.html'
console.log(location.search); //url的强霎?后面查詢字符串、參數(shù) ?cid=99&a=b
console.log(location.hash); //url中#后面的參數(shù) #mid=100
//history
history.back(); //返回
history.forward(); //前進(jìn)后退