###### tags: `jQuert` `Javascript` # Javascript與jQuery 筆記 最近更新日期:20201118 ## checkbox ### [checkbox 相關] 取得物件 $('input[NAME="chk1"]') 用名稱 $("#chk1") 用ID 用css ### [checkbox 賦值] $("#chk1").attr("checked",''); //設定不打勾 $("#chk2").attr("checked",true); //設定打勾 ### [checkbox 取值] var v=$("input[name='chk1']").is(":checked")); v=true有被打勾,否則為 false console.log($('input[name="chk1"]:checked').val()); console.log($(this).is(':checked')); ## radio ### [radio 賦值] $('input[name="sex"]')[1].checked = true; //radio 賦值==>第二個選項選取 $("input[name=state][value='2']").attr('checked',true); //radio 賦值==>值為2的那個選取 $("input[name=xxx]").val( 值 ); ### [radio 取值] $ ('#sb1').click(function(){ var method =$("input[name='doway']:checked").val(); //radio 取值,注意寫法 if( typeof(method) == "undefined"){ // 注意檢查完全沒有選取的寫法,這行是精華 alert( "請選取操作方式!"); return false; } 參考[jQuery 之 checkbox 及 radio 取值及設定值的正確方法](https://blog.xuite.net/vv650812/twblog/229550316-jQuery+%E4%B9%8B+checkbox+%E5%8F%8A+radio+%E5%8F%96%E5%80%BC%E5%8F%8A%E8%A8%AD%E5%AE%9A%E5%80%BC%E7%9A%84%E6%AD%A3%E7%A2%BA%E6%96%B9%E6%B3%95) ### 匿名函式範例 20201116 ```javascript= <script> //匿名函式 Anonymous 有時常稱 Lambda函式 var print = function(){ console.log('Lambda匿名含式用法');} // Lambda匿名含式用法 print(); //匿名函式 傳參數方法 var print = function(username){ console.log('妳好! '+ username);} // 妳好! YTC print('YTC'); //匿名函式 回傳值方法 var print = function(username){ return '妳好, '+ username;} var result = print('YTC'); console.log('匿名函式回傳值方法:',result); //匿名函式回傳值方法: 妳好! YTC //匿名函式 參數為函式範例 var print = function(username){ return '妳好, '+ username();} //內部username() 需使用函式形態 var result = print(function(){return "Mary";}); console.log('參數為函式範例',result); //參數為函式範例 妳好, Mary </script> ``` ### 巢狀函式範例 20201116 ```javascript= <script> //巢狀函式 function parent(){ var x =1; function child(){ var y=1; console.log('於child內:x='+x); } child(); try{ console.log('於child外:y='+y); //會出錯 }catch(e){ console.log('於child外列印y,出現錯誤'); } } parent(); try{ console.log('於parent外:x='+x); //會出錯 }catch(e){ console.log('於parent外列印x,出現錯誤'); } try{child();}catch(e){console.log('child()無法於parent()外執行');} </script> ``` ### 箭頭函式 20201116 ```javascript= <script> // 箭頭函式 Arrow function => 語法更簡潔 又稱Lambdas // 語法:由(參數開始)=>{函式之程式碼}。 function fun1(){return 1;} //原函式 let fun1a=()=>1;//箭頭函式 (參數部分由()包起來,加上=> ,=>右方為函式程式碼。 console.log(fun1a()); //1 function fun2(x){return 2*x;} let fun2a=(x)=>2*x;//若有定義參數,小括號可省略(如fun3a)->經測試多個參數,還是要用括號包起來 console.log(fun2a(6)); //12 let fun3a=x=>2*x; console.log(fun3a(7)); //14 let fun4a=(x,y)=>x+y; console.log(fun4a(7,8)); //15 let fun5a = (x,y)=>{ // 多行函式程式碼的話,用{}包起來。 z=x+y; return z; } console.log(fun5a(8,8));//16 //將箭頭函式當作參數方法 var members=["Mary","Peter","Lowina","ALice"]; var upperNames = members.map( // 傳統做法 註1 function(man){ return man.toUpperCase(); }); console.log(upperNames); //["MARY","PETER","LOWINA","ALICE"]; //註1:陣列 (arrray) 的 map() 方法用來遍歷一個陣列中的每個元素, //將元素分別傳入指定的函數,最後將所有函數的返回值組成一個新的陣列。 let upperNamesA=members.map(man=>man.toUpperCase()); //箭頭函式作法 console.log(upperNamesA); //["MARY","PETER","LOWINA","ALICE"]; </script> ``` ### 立即函式 20201116 ```javascript= //立即函式 Immediately Invoked Function Expression IIFE:定義後馬上執行。 //語法:(function(){})(); console.log('--立即函式--'); x=10; (function(){ var x=200; console.log(x); //200 可以避免區域變數與全域變數衝突問題 })(); console.log(x); //10 ``` ### 陣列用法 20201117 20201118 ```javascript= <script> //陣列宣告與給值 //使用建構函式方法 var ar = new Array(); var ar = new Array(3); var ar = new Array("Mary","Peter","Lowina","ALice"); var ar = Array("Mary","Peter","Lowina","ALice"); //使用Literal Notation方法 var ar = []; var ar = ["Mary","Peter","Lowina","ALice"]; //取得陣列內元素 console.log(ar[2]); //Lowina console.log(ar.length); //取得陣列長度 4 console.log(ar[ar.length-1]); //取得陣列最後一個元素 //陣列解構賦值 let members=["Mary","Peter","Lowina","ALice"]; let [s1,s2,s3,s4]=members; //使s1 對映到Mary 依此類推(賦值) console.log('s2=',s2); //Peter let s6,s7,s8,s0; //先宣告 [s6,s7,s8,s0]=members; //再賦值 console.log('s0=',s0); // Alice //取得剩餘項目 ... let [s10,s11,...oth]=members; console.log('s10=',s10); console.log('oth=',oth);//["Lowina","ALice"] console.log('oth is Array? ',Array.isArray(oth)); //true console.log('oth length? ',oth.length); //2 console.log('oth toString? ',oth.toString()); //Lowina,ALice //陣列操作函式 console.log('--陣列操作函式--'); ar=["Mary","Peter","Lowina","ALice"]; console.log(ar.toString()); //Mary,Peter,Lowina,ALice console.log(ar.valueOf()); //["Mary","Peter","Lowina","ALice"] 及一些詳細資訊 console.log(ar.join('|')); //Mary|Peter|Lowina|ALice 用指定符號,分開元素。 //push 及pop 操作,當作堆疊來操作 ar =[]; ar.push('1'); ar.push('2'); ar.push('3'); ar.push('4'); console.log('ar 之push操作結果',ar); //ar 之push操作結果 (4)?["1", "2", "3", "4"]0: "1"1: "2"2: "3"3: "4"length: 4__proto__: Array(0) console.log(ar.pop()); //4 由最後一個元素,開始取值 console.log(ar.pop()); //3 console.log('ar 之pop操作結果',ar); //ar 之pop操作結果 (2)?["1", "2"] //shift 先進先出 console.log('--shift 先進先出--'); ar =[]; ar.push('1'); ar.push('2'); ar.push('3'); ar.push('4'); console.log(ar.shift());//1 console.log(ar.shift(3));//2 跟參數3無關。 //sort reverse ar=[1,3,5,2,4,6]; console.log('排序與反排序ar()=',ar); console.log('ar.sort()=',ar.sort()); console.log('ar.reverse()=',ar.reverse()); console.log('ar.indexOf()=',ar.indexOf(2)); //反排序後的2位置。 </script> ``` S20200901 By YTC M20201116,M20201117,M20201118