js獲取元素:
- getElementById()----靜態方法,前面只能跟隨document
- document.body,document.title ----頁面上只有一個的元素
- getElementsByTagName()-----動態方法,前面可以是document也可以跟其他元素,返回的是一個類似陣列的集合
(1)有類似陣列的length
(2)有類似陣列的應用方式例如:ali[0]
(3)再用TagName的時候必須要加上[]
(4)所謂的動態方法,是指通過js動態新增的元素,getElementsByTagName()也可以找到
但是document.getElementById是找不到的
js常用滑鼠事件:
- onclick 點選
- onmouseover 滑鼠移動到上面
- onmouseleave 滑鼠移除
- onmousedown 事件會在滑鼠按鍵被按下時發生。
- onmouseout 事件會在滑鼠指標移出指定的物件時發生。
- onmouseup 在使用者滑鼠按鍵被鬆開時執行
- onmousemove 事件會在滑鼠指標移動時發生。
函式:
function abc(){
/*要做的事情*/
}
- 直接呼叫就是abc()
- 事件呼叫: 元素.事件 = 函式名
- 匿名函式
元素.onmouseover = function(){}
window.alert(1); window.alert("ok");
資料型別:
- 空
- 物件
- undefined
- Boolean
- String
- number
(1)要是基礎型別可以用typeOf()來判斷
字串方法charAt(),獲取到字串第幾個charCodeAt()獲取到UniCode編碼。然後在計算。再利用fromCharCode()換算成字元
(2)要是引用型別可以用instanceOf Array;instanceOf Object 來判斷
Number()方法能轉化字串數字,空,空陣列,要是前面有0比如00100轉化的結果就是100
parseInt()相當於把前面的數字部分轉化為數字,後面的字元直接捨棄.他轉化不了空,真要是轉化空結果就是NaN
parseFloat()同上
isNaN()判斷是不是NaN
字串方法charAt(),獲取到字串第幾個charCodeAt()獲取到UniCode編碼。然後在計算。再利用fromCharCode()換算成字元
(2)要是引用型別可以用instanceOf Array;instanceOf Object 來判斷
Number()方法能轉化字串數字,空,空陣列,要是前面有0比如00100轉化的結果就是100
parseInt()相當於把前面的數字部分轉化為數字,後面的字元直接捨棄.他轉化不了空,真要是轉化空結果就是NaN
parseFloat()同上
isNaN()判斷是不是NaN
作用域:
(1)在JS找到變數前,他要做的就是先找到一些關鍵字 var function,引數然後在正是執行程式碼之前他把這些都提前付了一個值,undefined
遇到重名的只留一個
(2)逐行解讀程式碼。每讀一行就是到庫裡面去看看,要是有值就替換,改變表示式的值
alert(a); //彈出:function a(){alert(4);}
var a=1; //預解析中的a改為了1
alert(a); //彈出1
function a(){alert(2);}//函式宣告,沒有改變a的值。什麼也沒發生。
alert(a); //繼續彈出1,因為a在預處理庫裡面的值沒有被改過。
var a=3; //預處理中a的值變為3
alert(a); //彈出3
function a(){alert(4);} //函式宣告,什麼也沒有發生
alert(a); //繼續彈出3
a(); //報錯 a is not a function
第一步:
預編譯他會先找一些關鍵字儲存到記憶體中。 比如var function 引數等等
他找到var a 先看左邊,不看右邊.上來都給他一個未定義 var a = undefined;要是function他就直接替換了
比如上面a從undefined直接變成了方法
他根本不考慮後面的值
第二步:
在一步步執行程式碼
要是遇見表示式(表示式就是 var a = xxx)他才會重新替換或者賦值複製程式碼
函式的作用域要區分全域性變數和區域性變數
在方法內部寫var的都是區域性。在方法外面的都是全域性變數。要是在方法裡面不加var,那他改變的就是全域性的值.
*特別注意的就是在JS裡面只有方法有作用域。for和if裡面都沒有作用域
函式返回值return:
alert fn1();
function fn1(){
return function(){
alert(1);
}
}複製程式碼
返回的值就是function(){alert(1)}
alert fn1()();
function fn1(){
return function(){
alert(1);
}
}
複製程式碼
返回的值就是1
arguments引數合集:
arguments表示所有的引數合集
lert(sum(1,2,3));
function sum(){
var n=0;
for(var i=0; i<arguments.length; i++){
n += arguments[i];
}
return n;
}複製程式碼
陣列:
- splice()方法
splice(a,b,c) a表示起始位置,b表示個數,c表示要替換的值
b要是為0表示插入,c要是什麼也不寫表示刪除。
var arr = ['TM', '鍾毅', '張森', '杜鵬', 'Leo'];
//刪除
//arr.splice(0, 1); //刪掉第0位,刪1個。兩個引數第一個是從第幾位開始,第二個是刪掉幾個。splice刪除的時候有返回值,返回的是被刪除的內容
//替換
//arr.splice(0, 1, '莫濤'); //替換第0位,替換1個,替換為'莫濤'。返回的還是刪除的東西
//新增
arr.splice(1, 0, '李賢'); //在第1位那裡,刪除0個,新增了一個'李賢'到了第1位,'鍾毅'就變成了arr[2]了。後面也可以新增多個。如果splice刪除了0個,那麼就沒有返回值。複製程式碼
var arr = [1, 2, 2, 4, 2];
for ( var i=0; i<arr.length; i++ ) {
for ( var j = i+1; j<arr.length; j++) {
if( arr[i]==arr[j] ){
arr.splice( j, 1 );
j--;
}
}
}
也可以使用indexOf
複製程式碼
Sort排序:
var arr = ['c', 'd', 'a', 'e'];
arr.sort(); // 'a', 'c', 'd', 'e' 按照unicode編碼排序
var arr2 = [4, 3, 5, 76, 2, 0, 8];
// arr2.sort(); // 0, 2, 3, 4, 5, 76, 8 sort預設是將陣列中的每一個按照字串來排序的,因此出現了76排在8前面的情況
// arr2. sort(function( a, b ){
return a - b; //如果a-b返回正數,就a、b兩個數字換個序。如果a-b是負數,就不換序
}) //返回數字從小到大 0, 2, 3, 4, 5, 8, 76
// arr2. sort(function( a, b ){
return b - a;
}) //返回數字從大到小 76,, 8, 5, 4, 3, 2, 0複製程式碼
js定時器
setTimeout只在指定時間後執行一次,程式碼如下:
- <script>
- //定時器 非同步執行
- function hello(){
- alert("hello");
- }
- //使用方法名字執行方法
- var t1 = window.setTimeout(hello,1000);
- var t2 = window.setTimeout("hello()",3000);//使用字串執行方法
- window.clearTimeout(t1);//去掉定時器
- </script>
setInterval以指定時間為週期迴圈執行,程式碼如下:
- //實時重新整理時間單位為毫秒
- setInterval('refreshQuery()',8000);
- /* 重新整理查詢 */
- function refreshQuery(){
- $("#mainTable").datagrid('reload',null);
- }