js - 學習準備1

 

 

location.search會帶着url後邊的那個問號,好比http://www.yintai.com?url=10&conm=edd,那麼location.search爲?url=10&conm=eddjavascript

 

交換兩個數的位置:css

var a=5;
var b=12;html

a=a+b;
b=a-b;
a=a-b;html5

alert('a:'+a);
alert('b:'+b);java

 

ajax注意:nginx

一、從服務器取過來都是字符串c++

eva('('+str+')');web

new Function("return " + str);ajax

二、不關心後綴,全部文件編碼一致正則表達式

在js中,若是你使用一個不存在變量,報錯,若是你使用一個不存在的屬性,是undefined

 

 

var a = 12;

function show(a) {

  a = 5;

}

show(a);

alert(a);

-----------------

結果: 12

-------------------

var a = [1,2,3];

function show(a) {a = [2,3,4]}

show(a);

alert(a);

---------------

結果:[1,2,3];

分析:show(a); 至關於show( var a = a);第一個a是show方法裏面的參數,第二個a是傳過來的數組的引用,因此第一個a只是

獲得了[1,2,3]的引用,在show裏邊,第一個a又被賦值了[2,3,4]的引用,就是第一個a的指向變了,可是全局變量a的指向仍是[1,2,3];

------------------------

var a = [1,2,3];

function show(a) {a[0]="abc";}

show(a);

alert(a);

-------------------------

結果:['abc', 2, 3]

---------------------------

 

爲何玩正則?

方便、性能極高

 

 

 

 

 

   

 

function show(){
alert("show");
}
//高級瀏覽器
//obj.addEventListener(事件名,函數)

document.addEventListener("click",show,false);

document.onclick = show;

點擊document會彈出兩個show。

 

克隆節點:

obj.cloneNode(true/false);

true: 深度克隆 會把當前元素內的全部節點都複製
false: 淺克隆 只會複製當前元素

刪除屬性:obj.removeAttribute(屬性名);

 

 

"事件"捕獲:setCapture 把全部元素的事件都集中在一個元素上

特色: 1 ie獨有
2 只能給元素添加捕獲
3 只能給鼠標事件添加捕獲 不能給鍵盤事件

ie:
oDiv.setCapture();
oDiv.releaseCapture();

 

oText.onkeydown = function(ev) {

  var oEvent = ev || event;

      if(oEvent.keyCode==13 && oEvent.ctrlKey && oEvent.shiftKey && oEvent.altKey) {

                 //同時按下回車,ctrl鍵,shift鍵及alt鍵就會進入if

                 alert("同時按下了回車,ctrl鍵,shift鍵, alt鍵");

     }

}

 

----------------------------------
詭異事情:
1.
Function instanceof Object
Object instanceof Function
Function instanceof Function
Object instanceof Object
2.
alert(arr instanceof Array);
alert(Array instanceof Function);
alert(arr instanceof Function);
3.
Object.prototype.a=5;

var a=12;
alert(a instanceof Object);

包裝類:
數字、字符串、布爾

數字-> new Number
字符串-> new String
布爾-> new Boolean
new Number(12)

檢測對象具體類型:
instanceof: 檢測本身父級,父級的父級...
constructor: 它的構造函數是誰,直接父級

請檢測一個對象是不是json?
function isJson(arg){
return arg.constructor==Object;
}

typeof:檢測類型

原型鏈:對象用到了一個方法,先找自身,再是本身的父級,再是父級的父級

*默認狀況,全部的東西都屬於Object

var oDate = new Date();
alert(typeof oDate); //object
alert(typeof Date); //function

嚴格模式:如何開啓嚴格模式?

'use strict';

嚴格模式好處:
1. 修復了局部函數裏面this
2. 定義變量必須加var
3. 不容許你在if、for等裏面是定義函數
4. 幹掉了with

嚴格模式做用範圍:
1. 最大也衝不出script標籤
2. 單個函數
3. 做用於整個js文件

*** 每一個js文件開頭必定要加 嚴格模式 'use strict';

嚴格模式兼容麼?不兼容

 

this:當前發生事件的對象(元素)
當前的方法屬於誰

 

好習慣:
1. 不用的東西刪除 拖拽 jsonp
2. 儘可能不使用全局變量
3. 能使用系統提供函數,堅定不本身寫
4. 儘可能使用正則操做字符串

 

做用域:
1. 全局變量:在哪裏都能使用,生存週期長,直到瀏覽器關閉,佔資源
2. 局部變量:只能在函數內部使用,生存週期極短,幾乎不耗資源
3. 閉包:子函數可使用父函數局部變量,若是子函數得不到釋放,整條做用域鏈上面局部變量都會保留。

----------------------------------
function show(){
var a=12;
alert(a);
}
//函數調用以前 a 沒有
show(); //中 a 有
//函數完畢 a 沒有

----------------------------------
var a=12;
function show(){
alert(a);
}
//函數調用以前 a 有
show(); // 有
// 有
----------------------------------
function show(){
var a=12;
document.onclick=function(){
alert(a);
}
}
document.onclick=null;
// 以前 沒有 a
show(); // 有a
// 完 有a
----------------------------------
function show(){
var a=12;
var b=5;
document.onclick=function(){
alert(b);
}
}

show();
----------------------------------
function aaa(){
var a=12;
function bbb(){
var b=5;
function ccc(){
var c=6;
document.onclick=function(){
var num=10;
alert(d);
}
}
ccc();
}
bbb();
}
aaa();


做用域鏈:子函數若是用一個變量,首先先找本身,本身的父級,父級的父級.....直到到全局,報錯

 

(function(win){

})(window)
--------------------------------------
性能優化:
js -> 幻燈片
js -> html5 -> 遊戲

項目:
1. 穩定性
2. 維護性
3. 性能
--------------------------------------
性能:
1. 網絡性能
2. 執行性能(代碼)

網絡性能:
工具:
f12 -> network
name 資源名稱
path 資源路徑
method 請求方法
status 狀態碼
type 資源類型
主類型/次類型
text/html
text/css
image/jpeg
zns/json
initiator 發起人 (此資源是由誰引起)
size 資源大小
time 資源加載所需時間
timeline 時間線
total 總共耗時
stalled 卡 瀏覽器此時響應速度
DNS lookup 域名解析 DNS服務器問題
initial connection 瀏覽器鏈接數
request send 客戶端網絡帶寬,發送數據過大
waiting 服務器配置,後臺代碼
Content Download 接收內容,服務器帶寬

DNS: Domain Name System 域名解析
http://www.baidu.com/ -> IP地址

web服務器:
iis、apache、tomcat、nginx等
BWS/1.1 Tengine(concat) JDWS

link ref="index.css,news.css,list.css"

firefox -> firebug ->yslow
yslow: 給網站打分
人家優化建議,學習方向
chrome->audits

方法:
1. http請求越少越好
合併
css,js,圖片等

index.css
news.css main.css
list.css

圖片 -> css sprites

合併方法:
a). 手動
b). 工具
2. http請求越小越好
壓縮 分號
css、js、圖片

壓縮方法:
a). 手動
b). 工具 yui compressor

http://tool.oschina.net/
3. 圖片延遲加載
4. CDN -> 財務
CDN: Content Delivery NetWork 內容分發網絡
5. 阻塞加載(同步加載):
非阻塞加載(並行加載、異步加載):

頁面:
css,js,html,圖片

css,html,圖片 並行加載
js 阻塞加載

爲何js須要阻塞加載?
穩定

由於js阻塞加載,因此通常作法,把js放到body最後

<a href="javascript:;">鏈接</a>
<img src="1.1.png">

yslow: put css at top, put javascript at bottom


我的建議:
1. 外部的js文件,下載下來,而後放到body後面
2. 本身寫的js文件,必定要放到head之間

 




split()中若是寫的是字符串,它就認爲你以字符串的形式分隔,若是寫的是正則,那麼就是以正則的形式分隔
split("\\s") 它其實找的是\s這個字符串,而不是空白

 

hack:

注意:先寫標準的樣式,再寫hack(這樣才能樣式覆蓋)

_或- IE6hack寫法

+或* IE6/7

*+在一塊兒表示僅IE7有效,好比*+html/body div{background:blue;}

若是寫成*+div{background:blue}就沒有效果

\0  IE8+    background:blue\0;

\9  IE系列瀏覽器

:root    高級瀏覽器(chrome、FF、IE9+)    如:root div{background:red;}

火狐瀏覽器:@-moz-document url-prefix() { div {width:200px; height:200px; background:red;} }

chome谷歌瀏覽器:

@media screen and (-webkit-min-device-pixel-ratio:0) {div{width:200px; height:200px; background:blue;}}

 

條件註釋:

IE10+不兼容條件註釋

<!--[if IE 6]> .. <![endif]--> IE6
<!--[if IE 7]> .. <![endif]--> IE7
<!--[if IE]> .. <![endif]--> IE系列(不包括IE10)
<!--[if lt IE 7]> .. <![endif]--> 小於
<!--[if gt IE 7]> .. <![endif]--> 大於
<!--[if gte IE 7]> .. <![endif]--> 大於等於
<!--[if !IE]>--> 非IE瀏覽器(包括IE10)<!--<![endif]-->

 

IE6不支持png半透明

<!--[if IE 6]>
<script src="js/DD_belatedPNG.js"></script>
<script>
DD_belatedPNG.fix('.png-img');
</script>
<![endif]-->

 

表達式(僅適用於IE系列瀏覽器)
-------------------------------------------
background:expression( 語句 );

div { height:200px; background:expression(document.documentElement.clientWidth<400?'red':'green');}

<!--[if IE 6]>
<style>
a { hide-focus:expression(this.hideFocus=true); }
</style>
<![endif]-->

 

重置樣式
-------------------------------------------
h1-6/p/ul/ol/dl margin-top margin-bottom
body margin-top margin-left maring-right margin-bottom

ol/ul padding-left

dd margin-left

table border-collapse:collapse;
td/th padding

input margin-top margin-left

form margin-top margin-bottom IE6

select margin

 

 

 

 

eval 能執行任何js代碼

通常不用 太強大 不可控
注入攻擊

 

while for 區別

for --- 個數肯定循環

while 個數不定
沒區別 能用for的地方 都能用while
能用while地方 都能用for

 

return
返回值 的數據類型 是任意的,你給什麼類型的就返回什麼類型!
參數 、變量 、返回值 都是同樣
1 程序碰到return 程序終止
2 return 後面有明確的值 返回相應的數據
3 return ; 返回一個undefined
4 沒有return 也是返回一個undefined 系統自帶
函數每執行一次 就會複製一次!!!!

 

連等:var a = b = c = d = 1; console.log(a,b,c,d);

 

 

 

 

 

類型   前綴   類型    實例
對象    o     object    oDiv
數組    a    Array    aItems
字符串    s    String    sUserName
整數    i    Integer    iItemCount
布爾值    b    Boolean    bIsComplete
浮點數    f    Float    fPrice
函數    fn    Function    fnHandler
正則表達式    re    RegExp    reEmailCheck
變體變量    v    Variant    vAnything

模 % 整數求【餘數】
10%3 1              0模上任何數都是0

基本類型:數字,字符串,布爾值,undefined

符合類型(object) : 能夠再分的

除了基本數據類型,其餘的都是複合數據類型


if中爲false的狀況:
false,0,"",null, undefined, NaN

var a = "";//false
a = " ";//true

if(a){
alert(true);
} else {
alert(false);
}


選項卡

typeof

number, string, boolean, object, undefined, function

typeof null是object

typeof undefined 是undefined

undefined:2種狀況:
一、真的沒有定義
二、定義了沒有賦值
三、訪問沒有的屬性

null:表示空對象,可是空對象也是對象。因此typeof null --》 object
null:給了可是是空的
undefined:沒有給東西

null和undefined的區別


parseInt()
原理:從左到右掃描整個字符串,碰到不是數字的就返回。若是第一個就不是數字的話,返回結果是NaN

Number(參數)
參數不能有非數字的東西,若是有的話--》NaN
NaN加減乘除(包括取膜等)任何值都是NaN

NaN永遠不等於NaN        isNaN()

隱式類型轉換:

var a = "12";
var b = 12;

alert(a == b);//true 勤快 先轉換數據類型 再比較
alert(a === b);//false 太懶 直接比較

alert("11" - "5"); alert("string"-5); alert(typeof "11" - "5");

typeof "11" - "5"就至關於(typeof "11") - "5"

閉包:子函數能使用父函數的變量 (東西)

獲取非行間樣式
高級瀏覽器
getComputedStyle("操做的元素", false).樣式的屬性名
低級瀏覽器 ie8-
操做的元素.cuurentStyle.樣式的屬性名
不能操做複合樣式
js裏面操做樣式都得駝峯標識

注意:這兩個都是隻能讀取,不能設置,不能獲取複合樣式(好比background就獲取不到)

即若是你要直接獲取style的所有值是獲取不到的,只能一個一個樣式的獲取,除非你用cssText(這個獲取的也是行內樣式,就是標籤內的樣式)

還有一點就是,在高級瀏覽器中,若是要獲取border-width屬性,那麼必須border-style,border-color都有值,不然獲取到的會是0px(在只設置了border-width這個屬性的狀況下)

obj.currentStyle.borderWidth      getComputedStyle(obj, false).borderWidth

運算符:
一、算術運算符
二、比較運算符
三、賦值運算符
四、邏輯運算符
運算符的優先級:最好加括號()!!!
經常使用優先級:
賦值《邏輯《比較《算術

true 1  false  0  null 0

alert(null + 1) //null 0

alert(undefined + 3); //NaN

 

Math.random()[0, 1)
n到m的隨機數[n, m)
Math.random()*(m-n) + n
獲取n到m的隨機數

10、

this.style.width = "400px";
this.style.borderWidth = "20px";
this.style.cssText = "width:400px; height:400px; border-wdith:20px;"

批量設置樣式(cssText):一、會覆蓋行間樣式   二、能設置又能讀取

還有一個設置樣式的方法是width, 不推薦使用

function show(){//return undefined; 沒有return的狀況下,系統會默認加上} alert(show());

var time = oDate.getTime();//1970.1.1 0點開始 到如今的一個毫秒數

s = 130

m parseInt(s/60) 分鐘

s s%60 秒


var str = "aaaaa"; 字符串是由字符組成
str.charAt(index) 字符(char)在 第index 位置

11、

getElementsByClassName("className")  //兼容性IE8-

js語法不容許花括號後面直接跟圓括號

封閉空間 : 自執行函數

functoin show(){}

show(參數列表)

(show)(參數列表)

(functoin show(參數列表){})(參數列表)

(function(參數列表){


})(參數列表);

優勢:

1 防止重名
2 解決i的問題

12、

getByClass兼容性寫法 2014-08-24  getByClass3.html

字符串: length

charAt(index) "abc" charAt(1) b
indexOf(str)
lastIndexOf(str)
substring(beginIndex[,endIndex])
substr(beginIndex, length)

split("切分規則")
toUpperCase();
toLowerCase();

json的for in方法

數組:

sort,reserve,length,join,concat,shift,unshift,push,pop,splice

pop沒有數據,彈出undefined,從最後一位彈出;

//字符串比較,中文沒有可比性 亂比

var a = "中國";
var b = "日本";
alert(a < b);

var a = "a"; var b = "b"; alert(a<b);

數組的方法:

concat() 鏈接兩個或更多的數組,並返回結果。
join() 把數組的全部元素放入一個字符串。元素經過指定的分隔符進行分隔。
pop() 刪除並返回數組的最後一個元素
push() 向數組的末尾添加一個或更多元素,並返回新的長度。
reverse() 顛倒數組中元素的順序。
shift() 刪除並返回數組的第一個元素
slice() 從某個已有的數組返回選定的元素,請注意,該方法並不會修改數組,而是返回一個子數組。若是想刪除數組中的一段元素,應該使用方法 Array.splice()
sort() 對數組的元素進行排序
splice(index,howmany,item1,.....,itemX) 刪除元素,並向數組添加新元素。
index 必需。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。
howmany 必需。要刪除的項目數量。若是設置爲 0,則不會刪除項目。
item1, ..., itemX 可選。向數組添加的新項目。
返回值類型:Array 包含被刪除項目的新數組,若是有的話。
toSource() 返回該對象的源代碼。
toString() 把數組轉換爲字符串,並返回結果。
toLocaleString() 把數組轉換爲本地數組,並返回結果。
unshift() 向數組的開頭添加一個或更多元素,並返回新的長度。var arr = ["4", "5", "6"];arr.unshift("1", "2");alert(arr);
valueOf() 返回數組對象的原始值

var a = 2; var b = 5; alert(Math.max(a,b)); alert(Math.min(a,b));

 

十3、

var oH4 = document.createElement("h4");

oH4.innerHTML = '<a href="javascript:;">hello</a>';

oDiv.appendChild(oH4);

appendChild只能添加Node節點

 

十4、

getAttribute不能徹底代替obj.屬性名,好比一個checkbox(後邊用oCk代替),oCk的checked屬性的值爲false和true,而若是你用getAttribute獲取checked的值的話,若是標籤中沒有checked這個屬性,那麼返回的是null。即便你選中了checkbox,可是沒有給該標籤上的checked賦值,那麼用getAttribute獲取的值仍是null。

獲取這個月有多少天

var oDate = new Date();
oDate.setDate(1);
oDate.setMonth(oDate.getMonth() + 1);
oDate.setDate(0);

 

十5、

預解析:把變量的定義(僅僅是定義)提高到做用域的最頂上

預解析的做用範圍:一、函數  二、<script>標籤

var aLi = oUl.children;

aLi.legnth; aLi[0];

父節點:oUl.parentNode,oUl.parentNode.style.display="none";

首個子節點:

//IE8-  oUl.firstChild.tagName

//高級瀏覽器   oUl.firstElementChild.tagName

 

十6、

var oSelect = document.getElementById("city");

var aOption = oSelect.getElementsByTagName("option");

oSelect.onchange = function() {

  alert(this.value);

      alert(this.selectedIndex);

      alert(aOption[this.selectedIndex].innerHTML);

      //給select中動態添加一個option

      var oNewOption = new Option("顯示到頁面上的值", "提交的時候的值");

  aOption.add(oNewOption);  //還能夠寫成oSeelct.add(oNewOption);

}

select:

索引:oSelect.selectedIndex

  options: oSelect.options   數組

  添加option:

    一、先建立:var newOpt = new Option("顯示的文本", "給後臺用的文本");

    二、插入:oSelect.options.add(newOpt);

        oSelect.add(newOpt);

      刪除:oSelect.options.remove(index);

        oSelect.remove(index);

十7、

JS的remove(index)方法,主要用用於從下拉列表刪除選項。

該方法從選項數組的指定位置移除<option>元素。若是指定的下標比0小,或者大於或等於選項的數目,remove()方法會忽略它,而且什麼也不作

aOption.remove(0);    aOption.remove(1);   oSelect.remove(0);   oSelect.remove(1);  aOption和oSelect均可以使用remove方法

 

十8、

var str = "123abc";

alert(typeof str++);

alert(str);

var abc = "123";

alert(typeof abc);

alert(typeof abc++);

alert(typeof abc);

 

十9、

str.charCodeAt(index);   字符串轉碼

var str = "abc你好";

document.write(str.charCodeAt(1) + " | " + str.charCodeAt(3));

String.fromCharCode(code)   編碼轉字符串

var str = "張三";

document.write(str.charCodeAt(0) + " | " + str.charCodeAt(1));//24352 19977

document.write(String.fromCharCode("24352") + " | " + String.fromCharCode("19977"));

寫出0到255編碼的全部值

var arr = [];
for(var i = 1; i <= 255; i++){
    arr.push(i + "=" +String.fromCharCode(i))
}
document.write(arr.join(" <br />"));

0x  十六進制

\u  unicode碼

中文的範圍4e00  -  9fa5

全部漢字的unicode編碼

var arr = [];
for(var i = 0x4E00; i < 0x9FA5; i++ ){
    arr.push(String.fromCharCode(i));
}
document.write(arr.join(" "));

 

二10、

文字的寫法
alert("一");
alert("\u4E00");
alert("一"=="\u4E00"); //true

數據的加密和解密:2014-08-31

文字加密.html + 文字加密2.html

計算文本大小.html(注意:若是字符編碼以ANSI的形式,那麼一箇中文是2個字節,若是是無BOM的UTF-8的形式編碼,那麼一箇中文是3個字節,若是是有BOM的UTF-8的形式編碼,那麼是4個字節,若是是gb2312的話,是2個字節)

 

二11、

逗號表達式

//逗號表達式:以最後一個爲準  逗號表達式的優先級最低

if(1,1,doucment,0,"") { //逗號表達式以最後一個爲準

  alert(true);

} else {

  alert(false);

}

alert(1,0);

function show(a) {

  alert(a);

}

show(1,0);

var a = (12,5);
alert(a);

 

二12、

預解析

狀況一:

<script type="text/javascript">alert(a); //報錯</script>

<script type="text/javascript">var a = 12;</script>

狀況二:

<script type="text/javascript">var a = 12;</script>

<script type="text/javascript">alert(a); //沒問題</script>

 

var a = 2; var b = 5; alert(Math.max(a,b)); alert(Math.min(a,b));
var a = 2; alert(Math.pow(a,3));//N方
var a = -12.51; alert(Math.abs(a));//絕對值
var a = -12.51; alert(Math.ceil(a));//向上取整 返回整數 (經過數軸想一想上下)
var a = -12.51; alert(Math.floor(a));//向下取整 返回整數 (經過數軸想一想上下)
var a = 4; alert(Math.sqrt(a));//開方
var a = -12.51; alert(Math.round(a));//四捨五入 返回整數

var str="123abc";
alert(typeof str++);//Number
alert(str); //NaN
alert(null == undefined);

return只能寫在function中,不能寫在其餘地方,好比for循環中就不能寫return;

屬性的訪問方式: 1點 (.) 2 [] 能用點的地方 都能用中括號

innerHTML : 能設置 也能修改 寫標籤

var a = 12; alert(window.a);

預解析: 把變量的定義(僅僅是定義)提高到做用域的最頂上
var a = 12; 1變量的定義 2變量賦值
做用範圍: 1 函數
2 script標籤
var a;//定義
alert(a);//undefined
a = 12;//賦值
//若是變量是一個函數 按變量走
show();
var show = function (){
var a = 5;
alert(a);
}();
<script>var a = 12;</script><script>alert(a);</script>
<script>alert(a);//報錯</script><script>var a = 12;</script>

字符編碼
var str = "張三"; document.write(str.charCodeAt(0));//24352 19977
document.write(String.fromCharCode(97));//24352 19977
中文的範圍
var arr = [];
for(var i = 0x4E00; i < 0x9FA5; i++ ){
arr.push(String.fromCharCode(i));
}
document.write(arr.join(" "));
alert("一"); alert("\u4E00"); alert("一"=="\u4E00");
20140727JS學習\2014-08-31\計算文本的大小;文字加密;文字解密

逗號表達式:
if(1,1,document,0,""){//逗號表達式以最後一個爲準
alert(true);
} else{
alert(false);
}
<script>alert(1,0);function show(a){ alert(a); }show(1,0);</script>
<script>var a = (12,5);alert(a);</script>

js排序

js組成:
1.ECMAScript 翻譯 --- 解釋器
2.DOM document object model 文檔對象模型 document 操做頁面元素
3.BOM browser object mode 瀏覽器對象模型 window 操做瀏覽器
兼容性:
ECMAScript ---- 幾乎沒有兼容性問題
DOM --- 60-70%
BOM --- 基本不兼容

標籤 = 元素 = 節點
節點:文本節點 --文字  元素節點-標籤
父節點: obj.parentNode
孩子節點: obj.children 數組 只包含第一層

首尾節點: 沒用
firstElementChild || firstChild
lastElementChild || lastChild
children[0] children[len-1]

兄弟節點:
previousElementSibling || previousSibling
nextElementSibing || nextSibing

oUl.insertBefore(oLi,null);
父級.insertBefore(須要移動節點,往誰前面);
oUl.insertBefore(oLi,null) 和oUl.appendChild(oLi); 等價
插入到元素的最後一個位置 必須是null
刪除元素: 父級.removeChild(節點);

body ----> document.body
html ----> document.documentElement
document 是全部節點的父級 結構上的父級

BOM: window
window.alert(); window.navgator.userAgent window.console.log();
var oNewWin = window.open(url,打開的方式[,屬性]);
返回一個新打開頁面的一個引用;
chrome 攔截 用戶體驗
ff 攔截
ie 打開
*** 用戶本身打開 瀏覽器不會阻止
url : 打開的一個地址
打開方式:
a target: _self 當頁打開 _blank 新開頁

window.close();
ff 沒反應 安全 1 若是要關閉 須要修改ff的配置文件
2 用戶本身打開的頁面才能關閉
chrome 馬上關閉
IE 有提示

obj.offsetWidth 盒模型的寬度
obj.offsetHeight 高度
盒模型: width + padding + border
顯示的元素纔有盒模型的概念
1 沒有寬高 也有值
2 display:none 元素 沒有offsetWidth/Height

scroll事件
chrome:
document.body.scrollTop/scrollLeft 滾動的高度 / 左側滾動的距離
ff ie:
document.documentElement.scrollTop/scrollLeft

當前可視區的高度 寬度
document.documentElement.clientHeight/clientWidth

location 能獲取也能設置
protocol http/https/ftp/file
protocol 協議 "http:"
host 域名 "www.a.com"
pathname 路徑 "/app/a.html"
search 數據 "?a=12"
hash 錨 "#1"

獲取屬性的方式:
3 種: 1 點
2 []
3 getAttribute
獲取:getAttribute(屬性名)
設置: setAttribute("屬性名",值)
特性: setAttribute 的屬性 只能經過 getAttribute獲取
getAttribute值能獲取 setAttribute的屬性 不能訪問 .形式添加的屬性
IE8- getAttribute能獲取.形式添加的屬性
經過setAttribute設置的屬性,IE8-下也能經過.的形式獲取該屬性的值
用途: get/setAttribute 用來設置和獲取自定義屬性

offsetLeft/offsetTop
offsetLeft: 元素到定位父級的一個距離
offsetParent:定位父級
parentNode: 結構的父級
document 結構的父級 body ==> html ==> document
body 定位的父級 body offsetParent ==> null

20140727JS學習\2014-09-21\選中文本;

oBtn.onclick這樣的事件會相互覆蓋,addEventListener不會相互覆蓋

 

已複習到2014-10-19

相關文章
相關標籤/搜索