コードは次のとおりです: function HashMap() { /**Map size **/ var size = 0; /**Object **/ var entry = new Object(); /**live **/ this.put = function (key , value) { if(!this.containsKey(key)) { size ; } entry[key] = value; } /**Pick **/ this.get = function (key) { return this.containsKey(key) ? entry[key] : null; } /**delete **/ this.remove = function ( key ) { if( this.containsKey(key) && ( delete entry[key] ) ) { size --; } } /**Whether to include Key **/ this.containsKey = function ( key ) { return (key in entry); } /**Whether to include Value **/ this.containsValue = function ( value ) { for(var prop in entry) { if(entry[prop] == value) { return true; } } return false; } /**All Value **/ this.values = function () { var values = new Array(); for(var prop in entry) { values.push(entry[prop]); } return values; } /**All Key **/ this.keys = function () { var keys = new Array(); for(var prop in entry) { keys.push(prop); } return keys; } /**Map Size **/ this.size = function () { return size; } /* 清空 */ this.clear = function () { size = 0; entry = new Object(); } } var map = new HashMap(); /* map.put("A","1"); map.put("B","2"); map.put("A","5"); map.put("C","3"); map.put("A","4"); */ /* alert(map.containsKey("XX")); alert(map.size()); alert(map.get("A")); alert(map.get("XX")); map.remove("A"); alert(map.size()); alert(map.get("A")); */ /**You can also use the object as Key **/ /* var arrayKey = new Array("1","2","3","4"); var arrayValue = new Array("A","B","C","D"); map.put(arrayKey,arrayValue); var value = map.get(arrayKey); for(var i = 0 ; i < value.length ; i ) { //alert(value[i]); } */ /**When an object is used as a Key, the toString() method of the object is automatically called. In fact, the String object is ultimately used as the Key**/ /**If it is a custom object, you have to override the toString() method. Otherwise, . will be the following result **/ function MyObject(name) { this.name = name; } /** function MyObject(name) { this.name = name; this.toString = function () { return this.name; } } **/ var object1 = new MyObject("小张"); var object2 = new MyObject("小名"); map.put(object1,"小张"); map.put(object2,"小名"); alert(map.get(object1)); alert(map.get(object2)); map.remove("xxxxx"); alert(map.size()); /**Running result Nickname Nickname size = 1 **/ /**If you change it to an object that overrides the toString() method, the effect will be completely different **/
4.常用的数字函数:
·数字型(Number) 1.声明 var i = 1; var i = new Number(1); 2.字符串与数字间的转换 var i = 1; var str = i.toString(); //结果: "1" var str = new String(i); //结果: "1" i = parseInt(str); //结果: 1 i = parseFloat(str); //结果: 1.0 //注意: parseInt,parseFloat会把一个类似于"32G"的字符串,强制转换成32 3.判断是否为有效的数字 var i = 123; var str = "string"; if( typeof i == "number" ){ } //true //某些方法(如:parseInt,parseFloat)会返回一个特殊的值NaN(Not a Number) //请注意第2点中的[注意],此方法不完全适合判断一个字符串是否是数字型!! i = parseInt(str); if( isNaN(i) ){ } 4.数字型比较 //此知识与[字符串比较]相同 5.小数转整数 var f = 1.5; var i = Math.round(f); //结果:2 (四舍五入) var i = Math.ceil(f); //结果:2 (返回大于f的最小整数) var i = Math.floor(f); //结果:1 (返回小于f的最大整数) 6.格式化显示数字 var i = 3.14159; //格式化为两位小数的浮点数 var str = i.toFixed(2); //结果: "3.14" //格式化为五位数字的浮点数(从左到右五位数字,不够补零) var str = i.toPrecision(5); //结果: "3.1415" 7.X进制数字的转换 //不是很懂 -.- var i = parseInt("0x1f",16); var i = parseInt(i,10); var i = parseInt("11010011",2); 8.随机数 //返回0-1之间的任意小数 var rnd = Math.random(); //返回0-n之间的任意整数(不包括n) var rnd = Math.floor(Math.random() * n)
5. オンラインで収集された JS スタック:
function stack(){ if(this.top==unknown){ //スタックの先頭ポインタとデータ格納領域を初期化 this.top=0; .unit=new Array (); } this.push=function(pushvalue){ //スタックへのプッシュ方法を定義 this.unit[this.top]=pushvalue ; this.top =1; } this.readAllElements=function(){ //すべてのデータを読み取るメソッドを定義します if(this.top==0){ alert("現在スタックが空でデータを読み取れません"); return(""); var count=0; for(count=0;count< ;this.top;count ){ outStr =this.unit[count] "," } return(outStr); >this.pop=function(){ // スタックをポップするメソッドを定義します if(this.top==0){ alert("現在のスタックは空なのでデータをポップできません"); return(""); } var PopTo=this.unit[this.top-1]; this.top--; return(popTo); /* スタックからデータをポップし、先頭ポインターを 1 つデクリメントしますが、ここではリソースは解放されません。つまり、データは this.unit の配列にまだ存在しますが、アクセスできません。現時点では 良い解決策が思いつきません。 */ } } 6. 最も一般的に使用される JavaScript 日付関数:
コードをコピー コードは次のとおりです。
・日付型 (Date) 1. var myDate = new Date() を宣言します。システム var myDate = new Date(yyyy, mm, dd, hh, mm, ss);
var myDate = new Date(yyyy, mm, dd); var myDate = new Date("monthName") dd, yyyy hh:mm: ss"); var myDate = new Date("monthName dd, yyyy"); var myDate = new Date(epochMilliseconds); 2. の一部を取得します。 time var myDate = new Date(); myDate.getyear(); //現在の年を取得します (2 桁) myDate.getFull Year(); // 完全な年を取得します。 1970-????) myDate.getMonth(); //現在の月を取得します (0 ~ 11、0 は 1 月を表します) myDate.getDate() // 現在の日付を取得します (1 ~ 31) ) myDate.getDay() // 現在の週を取得します。 ! myDate.getHours(); //現在の時間数を取得します (0 ~ 23) myDate.getMinutes() //現在の分数を取得します (0 ~ 59) myDate.getSeconds (); / / 現在の秒数を取得します (0 ~ 59) myDate.getMilliseconds() // 現在のミリ秒数を取得します (0 ~ 999) myDate.toLocaleDateString();現在の日付 myDate.toLocaleTimeString (); // 現在の時刻を取得します myDate.toLocaleString( ) // 日付と時刻を取得します 3. 以前または将来の時刻を計算します var myDate = new Date(); myDate(myDate.getDate() 10); //現在時刻に 10 日を加えたもの //set から始まる同様のメソッドは、以下を参照してください。ポイント 2 4. 2 つの日付のオフセットを計算します。Amount var i = daysBetween(beginDate,endDate) //日数を返します var i = beginDate.getTimezoneOffset(endDate);分数 5. 有効な日付を確認します //checkDate () "mm-dd-yyyy" または "mm/dd/yyyy" の 2 つの形式の日付のみを許可します if( checkDate ("2006-01-01") ){ } //正規表現 (yyyy-mm-dd, yy-mm-dd, yyyy/mm/dd, yy/mm/dd を確認するために自分で書きました) var r = /^(d{2}|d{4}) [/-]d{1,2}[/-]d{1,2}$/; if( r.test( myString ) ){ } 7. 最も一般的に使用される文字列関数 API: コードをコピー
コードは次のとおりです:
・String (文字列) 1. ステートメント var myString = new String("良い子はみんな元気です。"); var myString = "良い子は元気です。" "; 2. 文字列の連結 var myString = "すべて " "良い子" "は大丈夫です。"; var myString = "すべて "; myString = "良い子は大丈夫です。"; 3. 文字列をインターセプトします //6 番目の位置から始まる文字をインターセプトします var myString = "良い子は大丈夫です。"; : "良い子は元気です。" //数字 0 から数字 10 までの文字をインターセプトします var myString = "良い子は元気です。" varセクション = myString.substring( 0, 10); //結果: "Every Good" //下から 11 番目から 6 番目までの文字をインターセプトします var myString = "Every Good Boy Does Fine."; .slice(11,-6); //結果: "boy doesn't" //長さ 4 の文字を 6 番目の位置から切り捨てます var myString = "良い子は大丈夫です。" ; 🎜>varセクション = myString.substr(6,4); //結果: "良い" 4. case var myString = "Hello" var lcString = myString.toLowerCase (); //結果: "hello" var ucString = myString.toUpperCase(); //結果: "HELLO" 5. 文字列比較 var aString = "Hello!"; new String("Hello!"); if( aString == "Hello!" ){ } //結果: true if( aString == bString ){ } //結果: true if ( aString === bString ){ } //結果: false (値は同じですが、2 つのオブジェクトは異なります) 6. 文字列を取得します var myString = "皆さん、こんにちは。 "; // 取得できない場合は -1 を返します。取得できた場合は文字列内の開始位置を返します if( myString.indexOf("every") > -1 ){ } //結果: true 7. 文字列を検索して置換します var myString = "私はあなたの父親です。" var result = myString.replace("is","am"); //結果: 「私はあなたの父親です。」 8. 特殊文字: b: バック文字 t: 水平タブ文字 n: 改行文字 v: 垂直タブ文字 f : 改ページ r: 復帰文字 " : 二重引用符 ' : 一重引用符 \ : バックスラッシュ 9. 文字を Unicode エンコードに変換します var myString = "hello"; var code = myString.charCodeAt( 3); //「l」の Unicode エンコードを返します(整数型) var char = String.fromCharCode(66); //Unicode 66 で文字を返します 10文字列から URL へのエンコード var myString = "hello all"; var code = encodeURI(myString); //結果: "hello all" var str = decodeURI(code);こんにちは皆さん" //対応: encodeURIComponent() decodeURIComponent() 8. 数学関数:
コードをコピー
2 の絶対値を返します。 (num): num
3 の逆余弦値を返します。 Math.asin(num): num 4 の逆正弦値を返します。 Math.atan(num): num の逆正接値を返します。 5. Math.atan2(y ,x): y を x で割った商の逆正接を返します。Math.ceil(num): num 7 より大きい最小の整数を返します。 Math.cos(num): num 8 のコサイン値を返します。 Math.exp(x): num のべき乗を返します): num 11.Math.max の自然対数を返します。 (num1,num2): num1 と num2 の大きい方を返します 12.Math.min(num1,num2): num1 と num2 の小さい方を返します 13.Math.pow(x,y): を返しますx の y 乗の値 14.Math.random(): 0 と 1 の間の乱数を返します 15.Math.round(num): num 16 の四捨五入された値を返します.Math.sin(num): num の正弦値を返します。17.Math.sqrt(num): num の平方根を返します。18.Math.tan(num): num の正接値を返します。 19.Math.E: 自然数 (2.718281828459045) 20.Math.LN2: 2 の自然対数 (0.6931471805599453) 21 .Math.LN10: 10 の自然対数 (2.3025850929940) 46) 22.Math.LOG2E: log 2 を底とする自然数 (1.4426950408889634) 23.Math.LOG10E: log 10 を底とする自然数 (0.434294481903 2518) 24.Math.PI : π (3.141592653589793) 25.Math.SQRT1_2 : 1/2 の平方根 (0.7071067811865476) 26.Math.SQRT2 : 2 の平方根 (1.4142135623730951) 9.ブラウザ機能関数: コードをコピー
コードは次のとおりです:
1. ブラウザ名 //IE : "Microsoft Internet Explorer" //NS : "Netscape" var browserName = navigator.appName; 2. 🎜>bar browserVersion = navigator.appVersion; 3. クライアント オペレーティング システム var isWin = ( navigator.userAgent.indexOf("Win") != -1 ); .indexOf("Mac") != -1 ); var isUnix = ( navigator.userAgent.indexOf("X11") != -1 ); 4. オブジェクトがサポートされているかどうかを確認します。 property //オブジェクト、メソッド、またはプロパティが未定義の場合、これらの特別な値は false です。 if( document.images ){ } if( document.getElementById) ){ } 5. ブラウザの現在の言語を確認します。 if( navigator.userLanguage ){ var l = navigator.userLanguage.toUpperCase() } 6. ブラウザが Cookie をサポートしているかどうかを確認します。 >if (navigator.cookieEnabled){ } 10. JavaScript オブジェクト指向メソッド実装の継承: メソッド呼び出し
コードをコピー
this.getSex = function(){
return this.sex } } //クラス静的変数 (変更しない場合~~) animal.SEX_G = new Object(); // 女性 Animal.SEX_B = new Object() // 男性 // 動物のサブクラス Bird function Bird(bSex){ animal.call(this, bSex); this.fly = function (iSpeed){ alert("最大飛行速度" iSpeed); } } // 動物サブカテゴリー 魚 functionfish(bSex){ animal.call( this, bSex); this.swim = function(iSpeed){ alert("iSpeed までの水泳速度) } } //魚と鳥のハイブリッド。 。 。 関数crossBF(bSex){ bird.call(this, bSex); fish.call(this, bSex); var oPet = newcrossBF(animal.SEX_G) ; // メスの魚の鳥 alert(oPet.getSex() == Animal.SEX_G ? "メス" : "オス"); 🎜> 11. オブジェクト指向プログラミングを使用して JavaScript を作成します: コードをコピーします コードは次のとおりです。 :
MyTool = new function(){
return ''; 🎜>else {
return str;
}
}
rootId = MyTool.notNull(rootId,'001000'); 12.使用された JS メソッド (フォーム検証のいくつかのメソッド、ドロップダウン メニューで一般的に使用されるメソッドなど):
コードをコピー
コードは次のとおりです:
/** * JSON オブジェクトを文字列に変換します。 * @param {json object} json * @return {json string} */ function jsonObj2Str(json) { var str = "{"; for (prop in json) { str = prop ":" json[prop] ","; } str = str.substr(0, str.length - 1); str = "}"; 文字列を返します。 } /** * json 文字列を json オブジェクトに変換します。 * @param {json string} jsonstr * @return {json object} */ function jsonStr2Obj(jsonstr) { return eval("(" jsonstr ")"); } /** * 要素の左の座標値を取得します。 * @param {dom object} obj * @return {position value} */ function getLeft(obj){ var offset=e.offsetLeft; if(e.offsetParent!=null) offset =getLeft(e.offsetParent); オフセットを返します。 } /** * 要素の絶対位置の先頭座標値を取得します。 * @param {dom object} obj * @return {position value} */ function getTop(obj){ var offset=e.offsetTop; if(e.offsetParent!=null) offset =getTop(e.offsetParent); オフセットを返します。 } /** * 文字列から左右のスペースを削除します。 * @param {元の文字列} str * @return {スペースを削除した後の文字列} */ function trim(str) { return str.replace(/(^s*)|(s*$)/g, ""); } /** * ID に基づいて要素を取得します。 * @param {要素 ID 値} str * @return {dom オブジェクト} */ function $(str) { return document.getElementById(str); } /** * 名前でオブジェクトを取得します。 * @param {要素名の値} str * @return {名前に従って返される最初のオブジェクト} */ function $byName(str) { var arr = document.getElementsByName(str); if (arr) return arr[0]; else null を返す; } /***************次のメソッドはフォーム検証に関連します**************************** * ******************/ /** * 空でない文字列を返します。デフォルト値がある場合は、デフォルトの文字列を返します。 * @param {デフォルト値} defaultStr * @return {結果を返す} */ function notNull(str,defaultStr) { if (typeof(str) == "未定義" || str == null || str == '') { if (defaultStr) return defaultStr; else return ''; } else { return str; } } /** * 2 つの日付のサイズを比較します。 * @param {小さい日付のテキスト ボックス ID} smallDate * @param {大きい日付のテキスト ボックス ID} bigDate * @param {エラー プロンプトメッセージ} msg */ function CompareTwoDate(smallDate, bigDate, msg) { var v1 = $(smallDate).value; var v2 = $(bigDate).value; if (v1 >= v2) { alert(msg); v2.focus(); false を返します。 } true を返します。 } /** * 2 つの金額を比較するメソッドです。 * @param {小さい方の金額} smallNum * @param {大きい方の金額} bigNum * @param {エラーメッセージ} msg * @return {ブール値} */ function CompareTwoNum(smallNum, bigNum, msg) { var v1 = $(smallNum).value; var v2 = $(bigNum).value; if (parseFloat(v1) >= parseFloat(v2)) { alert(msg); v2.focus(); false を返します。 } true を返します。 } /** * テキストボックスの長さが指定された長さを超えているかどうかを確認します。 * @param {テキスト ID} textId * @param {テキストボックスの最大長} len * @param {テキストボックスの説明内容 } msg * @return {エラーがある場合は false を返し、そうでない場合は true を返す} */ function checkLength(textId, len, msg) { obj = $(textId); str = obj.value; str = str.replace(/[^x00-xff]/g, "**"); realLen = str.length; if (realLen > len) { alert("[" msg "]" "長さ最大は" len "位です。", "请再输入!n注意:一汉字占有2位。"); obj.focus(); return false; } else return true; } /** * テキスト ボックスを空にできないかどうかを決定します。 * @param {テキスト ボックス ID} textId * @param {テキスト ボックスの説明内容} msg * @return {存在する場合は false を返します。エラー、それ以外の場合は true を返します} */ function checkIfEmpty( textId, msg) { var textObj = $(textId); var textValue = textObj.value if (trim(textValue) == '') { alert('[' msg '] は空であってはなりません! '); return false; } /* * * 指定されたテキスト ボックスの内容が電子メールである必要があることを決定します。 * @param {テキスト ボックス ID} textId * @param {テキスト ボックスの説明} msg * @return {Ifこれは電子メールのコンテンツです。そうでない場合は true を返し、それ以外の場合は false を返します。} */ function checkIsMail(textId, msg) { var obj = $(textId); if (!_isEmail(obj.value)) { alert('[' msg '] は有効な電子メール アドレスではありません! '); return false; } else return true; 🎝> */ function _isEmail(strEmail) { //次の検証は 2 つ以上の '.' 数字があるかどうかです。ある場合は、それは間違っています。 var first = strEmail.indexOf ('. '); if (strEmail.indexOf('@')== -1) { return false; } var tempStr = strEmail.substring(最初の 1); 🎜>if (tempStr.indexOf('.') != -1) { return false; } if (strEmail .search(/^w ((-w )|( .w ) )*@[A-Za-z0-9] ((.|-)[A-Za-z0-9] )*.[A-Za-z0-9] $/) != -1) { return true; } else return false } /** * メールであるかどうかを確認します。 * @param {検証する文字列} strEmail * @return {Boolean} */ function checkIsNum(textId, msg) { obj = $ (textId) ; if (isNaN(obj.value)) { alert('[' msg '] は数値でなければなりません。 '); obj.focus(); return } else return true; /** * テキスト ボックスが数値かどうかを判断します。 * @param {テキスト ボックス ID} textId * @param {テキスト ボックスの説明内容} msg * @return {Boolean} */ 関数textId, msg) { obj = $(textId); if (!_isValidString(obj.value, '[' msg '] には不正な文字が含まれていてはなりません。')) { obj.focus(); false を返します。 } true を返します。 } /** * 正当な文字列であるかどうかを判定します。 * @param {判定対象の文字列} szStr * @param {テキストの説明} errMsg * @return {正当な場合は true を返します。それ以外の場合は false を返します} */ function _isValidString(szStr,errMsg) { voidChar = "'"><`~!@#$%^&()( )!¥……??“””*”; for (var i = 0; i aChar = voidChar.substring(i, i 1); if (szStr.indexOf(aChar) > -1){ alert(errMsg) return false; } } return } /*************** 次のメソッドはドロップダウン メニューに関連します*************************** *******************/ /** * コントロールのドロップダウン メニューを -1 にすることはできません (選択されていない場合は値 = -1) * @param {ドロップダウン メニュー ID} selectId * @param {ドロップダウン メニューの説明の内容} msg * @ param {ドロップダウン メニューの null 値に対応する値、デフォルトは -1} nullValue * @return {Boolean} */ function checkChooseSelect(selectId, msg ,nullValue) { var obj = $(selectId); value == notNull(nullValue,'-1')) { alert('[' msg '] 必須!'); return false; else return true; } /** * ドロップダウン メニューの表示テキストを取得します。 * @param {ドロップダウン メニュー dom オブジェクト} selectObj * @return {ドロップダウン メニューの表示テキストを返します} */ function getSelectText(selectObj) { return selectObj.options[selectObj.selectedIndex].text; /** * ドロップダウン メニューの表示値を取得します。 * @param {ドロップダウン メニュー dom オブジェクト} selectObj * @return {ドロップダウン メニューの表示された「値」を取得します。 */ function getSelectValue(selectObj) { return selectObj.options[selectObj.selectedIndex].value; /** * ドロップダウン メニューの選択状態を指定した値に設定します。 * @param {ドロップダウン メニュー オブジェクト} obj * @param {選択される値} value */ function setSelectValue(obj, value) { /*for (i = obj.options.length - 1; i >= 0; i--) { if (obj.options[i] .value == 値) { obj.options[i].selected = true; } } */ obj.value= 値; } /** * キーと値の文字列の内容に基づいてドロップダウン メニューを動的に組み立てます * @param {ドロップダウン メニュー用に組み立てられる DOM オブジェクト} obj * @param {Key-値のペアは and; で除算されます。例: '1, Male;2, Female; 3,Unknown'} valAndText */ function setSelectContent(obj,valAndText){ if(trim(valAndText)==''){ alert('没有要进行構成下拉菜单のデータ!'); false を返します。 } clearSelect(obj); var keyandvalues = valAndText.split(';'); for(var i=0;ivar arr = keyandvalues[i].split(','); if(arr){ var 値 =arr[0]; var text =arr[1]; var objOption = 新しいオプション(テキスト,値); obj.add(objOption); } } } /** * ドロップダウン メニューの内容をクリアします。 * @param {ドロップダウン メニュー オブジェクト} obj */ function clearSelect(obj) { for (var i=obj.options.length; i >0 ; i--) { obj.remove(0); } } /*************** 次のメソッドは複数選択ボックスに関連します************************** **** *******************/ /** * 選択したチェックの ID をカンマで区切った文字列を返します。 * @param {checks array} checks * @return 選択した ID で構成される文字列 */ function getCheckedIds(checks){ var selectedValue = ''; var len = checks.length; for(varindex=0;indexif(checks[index].checked==true) { selectedValue = checks[index].value ","; } } if(selectedValue.length>0) return selectedValue.substring(0,selectedValue.length-1); 選択された値を返します; } 上の js を保存した後、下の html を使用して検査を実行します:
复制代