ホームページ ウェブフロントエンド jsチュートリアル JavaScript フレームワークの概要 個人的な職歴_JavaScript スキル

JavaScript フレームワークの概要 個人的な職歴_JavaScript スキル

May 16, 2016 pm 06:51 PM
js フレーム

/*************************************************** * ************************************* 著者: Xiao Feng
QQ:77182997
MSN :xiaofengnet@hotmail.com
電子メール:xiaofengnet@163.com
Web サイト: http://www.d369.net
著作権を保持し、ご協力に感謝します
バージョン: V 1.6.1
/****************************************** *********** ************************************** *
/*
は XiaoFeng です。System メソッド Scroll を追加します [2009-02-18] V 1.4.1
メソッド Index to Array を追加します [2009-04-09] V 1.4.2
String ,EndsWith 関数に TrimStart, TrimEnd, Trim, StartsWith を追加 [2009-04-09] V 1.4.3
保持される小数点以下の桁数を実現するために Number に toFixed メソッドを追加 [2009-04-17] V 1.4 .4
ファイルの名前とファイルを取得するための FileType サフィックス名 [2009-04-20] V 1.4.5
XiaoFeng.Dialog は選択ウィンドウと保存ウィンドウを開きます [2009-05-28] V 1.4.6
Object クラスを通じてメソッド getType を各オブジェクトに追加します。 オブジェクトの親ノードを取得します。 getParent[2009-06-04] V 1.4.7
メソッド getQuery(s) を更新します。 U のデフォルトは現在のアドレスバーのアドレス、s は抽出するために渡されるパラメータ getQuery(U,s) U 渡されたアドレス s と抽出される渡されたパラメータの場合 [2009-06-08] V 1.4.8
追加String wTh 全角から半角への変換と hTw 半角から全角への変換の 2 つのメソッド [2009-06-08 ] V 1.4.8
メソッド ajax.Fun = function(){} を変更しました。処理中の ajax クラスと、サーバー ハンドラーにエラーがあるかどうかを判断する属性 ajax.Error [2009-06-09] V 1.4.9
String、Array、Object、および Element のメソッドを書き換えました [ 2009-06-12] V 1.5.0
キャプチャ イベント ソース getElement XiaoFeng.getElement を追加 [2009-06 -12] V 1.5.1
FF IE LoadXml() と互換性があるようにローディング XML 関数を更新[2009-06-12] V 1.5.2
無制限ドロップダウン リスト SelectClass の機能を追加 [2009-06-13] V 1.6.0
無限ドロップダウン リストの選択時を更新空の場合、選択された値は前のレベルのドロップダウン リストの値です [2009-06-13] V 1.6.1
*/
/*==================================== === ============================================== === =
フレームワークのコアコンテンツ--------[基本ツールクラス]
====================== ====== =========================================== ====== ===========
*/
if(!window.XiaoFeng || !XiaoFeng || typeof XiaoFeng == "未定義")var XiaoFeng = ウィンドウ。 XiaoFeng = new Object() ;
var Prototype = {
バージョン: "1.4.9",
ScriptFragment: '(?:)((n|r|.)*?)(?:)',
emptyFunction: function(){} ,
K: function(e){return e}
}
/*=========================== ======= ========================================== ======= =====
【オブジェクトクラスに静的メソッドを追加】
[2008-08-13]作成
オブジェクトクラスに静的メソッドを追加: extend
* /
Object.extend = function(destination,source){
for(source のプロパティ)destination[property] = source[property];
return destination;
}
//追加オブジェクト クラス メソッドを介して各オブジェクトに対して extend
Object.prototype.extend = function(object){return Object.extend.apply(this,[this,object]);}
/*===== ======= ========================================== ======= =============================
[配列に属性を追加]
[ 2009 年 6 月 12 日に作成]
配列に属性を追加します
*/
Object.extend(Array.prototype,{
remove : function(N){//指定された要素を削除します
if(isNaN(N )||N>this.length)return false;
for(var i=0,n=0;ithis.length -= 1;
},
add : function(v){//
for(var i=0; iif(this[i].toString() == v.toString()) Break;
this.push(v); : function(s){// 配列内の要素のインデックスを指定します。
var FlagIndex = -1;
for(var i = 0;i if(this [i].toString() == s.toString()){FlagIndex = i; ブレーク;}
return FlagIndex; first : function(){return this[0];} ,//配列の最初の要素
last : function(){return this[this.length - 1];},//配列の最後の要素
clear : function(){this.length = 0; これを返します;}//配列要素をクリアします
}); ============== =================================== ============== ====
[文字列に属性を追加]
[2009-06-12 作成]
文字列に属性を追加
*/
Object.extend(String.prototype ,{
len : function(){return this.replace(/[^x00-xff]/g,"ya").length;},//文字列の長さ、漢字 1 文字は 2 文字です。
Length : function(){
var M = 0;
for(var i=0;iif (this.charCodeAt(i) > 255)
else
M = M 1;
return },
Trim : function(s){return this.TrimStart(s).TrimEnd(s);},//先頭と末尾の指定文字をクリア
TrimStart: function(s){//先頭の指定文字をクリア
if(!s)s = "\s ";
varrimStartStr = new RegExp("^(" s ") ","g");
return this.replace(trimStartStr,"" );
},
TrimEnd : function(s){ //末尾の指定文字をクリア
if (!s)s = "\s "; var trimEndStr = new RegExp( "(" s ") $","g");
この .replace(trimEndStr,"");,
StartsWith : function(s){
if (!s)s = "\s";
varstartsWithStr = new RegExp("^(" s ")","g");
returnstartsWithStr.test(this);
},
EndsWith : function(s){
if (!s)s = "\s";
var endWithStr = new RegExp("(" s ")$","g");
return opensWithStr.test(this);
},
wTh : function(){//全角转换半角
var s = "";
for(var i = 0;i s = this.charCodeAt(i) >= 65248?String.fromCharCode(this.charCodeAt(i) - 65248):this.charAt (私);
s を返します。
},
hTw : function(){//半角转换全角
var s = "";
for(var i = 0;i s = this.charCodeAt(i) s を返します。
},
LeftStr : function(M){//左边指定长度文字
if(this.Length() > M){
var str = "";
for(var i=0;iif(this.charCodeAt(i) > 255)
M -= 2;
else
M -= 1;
str = this.substring(i,i 1);
if(M }
return str "...";
}else
これを返します;
},
stripTags : function(){return this.replace(/?[^>] >/gi, '');}
});
/*=========================================== ==============================================
【数字小数点後几位取得]
[创建2009-06-12]
は数字追加付加プロパティ
*/
Object.extend(Number.prototype,{
toFixed : function) (N){//格式化数字
if(arguments.length == 0)N = 2;
with(Math){var m = pow(10,Number(N));var s = ( Round(this*m)/m).toString();}
if(s.indexOf('.') s = "."
s = "0000000000000000000000";
}
return s.substr(0,s.indexOf('.') N 1);
}
});
/*=========================================== ===========================================
【获取一个指定ID のポイント]
は [2005-05-03]
document.getElementById(Id) で指定された ID のポイントを取得します。これは、この方法の高速な方法と展開で複数のメンバーを指定できる
数値は、1 つのオブジェクトの数値グループを返します。パラメーターは ID である必要はありませんが、オブジェクト自体への参照にすることもできます。たとえば、$("id") は $($("id"))
*/
var と同等です。 $ = XiaoFeng.$ = function( ){
var 要素 = new Array();
for(var i=0;ivar 要素 = argument[i] ;
if (typeof( element) == "string") element = document.getElementById?document.getElementById(element):document.all.element
if (arguments.length==1) return 要素
elements.push(要素) ;
}
要素を返す;
}
/*==================== ======== ========================================= ======== ========
[指定した ID のノードを取得]
[2005-05-03] に作成
document.getElementsByName(id) を取得指定された ID で設定された名前、はい このメソッドのショートカットと拡張機能では、複数のパラメーターを指定してオブジェクト配列を返すことができます
*/
var $N = XiaoFeng.$N = function(){
var elements = new Array();
for(var i=0;ivar element=arguments[i];
if (typeof(element) == "文字列" ) element = document.getElementsByName?document .getElementsByName(element):document.all.element;
if (arguments.length==1) return element;
🎜>戻り要素;
}
/*================================== ======== ========================================= ==
【TagNameを指定して1つのNodeを取得】
[2005-05-03]作成
document.getElementsByTagName(TagName)はTagNameを指定して名前セットを取得するこのメソッドのショートカット兼拡張です。複数のパラメータを指定して 1 つのオブジェクトを返すことができます array
*/
var $T = XiaoFeng.$T = function(){
var elements = new Array(); ;ivar element = argument[i];
if (typeof(element) == "string") element = document.getElementsByTagName(element); argument.length==1) 要素を返します。
elements.push(element); 要素を返します。
/*========= ======= ========================================== ======= ====================
【要素の作成】
作成日 [2008-06-18]
*/
var $ C = XiaoFeng.$C = function(){return document.createElement(arguments[0]);}
/*=============== ========= ======================================== ========= ===================
【配列変換】
[2008-08-13]作成
*/
var $A = XiaoFeng.$A = function(a){return a?Array.apply(null,a):new Array;}
/*========= ========== ======================================= ========== ======================
[キャッチイベントソース]
作成日 [2008-08-] 13]
*/
var getElement = XiaoFeng.getElement = function(){
if(arguments.length == 0)
return event.srcElement
else
return document; .all?arguments[0].srcElement :arguments[0].target;
}
/*======================= ========== ======================================= ========== =====
[オブジェクトクラスにイベント、アンロードイベント、マウス座標を追加]
[2008-10-09]作成
イベントを追加、イベントとマウス座標をオブジェクト クラスにアンロード:
*/
Object.extend(Object.prototype,{
addEvent : function(a, b, c, d){
//関数を追加
if(a.attachEvent)a.attachEvent (b[0], c);
else a.addEventListener(b[1] || b[0].replace(/^on/, "") , c, d || false);
return c;
},
delEvent : function(a, b, c, d){
if(a.detachEvent) [0], c);
else a .removeEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false); ;
},
イベント : function (){//Get Event
return window.event ? window.event : (function (o){
do{
o = o.caller ;
} while (o && !/^ [object[A-Za-z]*Event]$/.test(o.arguments[0]));
return o.arguments[0]; 🎜>})(this.reEvent);
},
Scroll : function(){
return {
Left : document.body.scrollLeft == 0?document.documentElement.scrollLeft:document .body.scrollLeft,
トップ :document.body.scrollTop == 0?document.documentElement.scrollTop:document.body.scrollTop
}
}); ============ ===================================== ============ ==========================
[ブラウザとそのバージョンを判断する]
[2009-06-12 作成]
*/
XiaoFeng.userAgent = function(){
var ua = navigator.userAgent.toLowerCase();
if(window.ActiveXObject) )return {name : "IE",ver : ua .match(/msie ([d.] )/)[1]}
if(document.getBoxObjectFor)return {name : "Firefox",ver : ua.match(/msie ([d.] )/)[1]} match(/firefox/([d.] )/ )[1]}
if(window.MessageEvent && !document.getBoxObjectFor)return {name : "Chrome",ver : ua.match(/chrome/([ d.] )/)[1]}
if(window.opera)return {name : "Opera",ver : ua.match(/opera.([d.] )/)[1]}
if(window.openDatabase)return {name : " Safari",ver : ua.match(/version/([d.] )/)[1]}
return {name : "Other",ver : 0 }
}
/*== ===================================== ============ ====================================
[マウスの相対座標]
[2008-10-06作成]
*/
var Event = function(){
var e = Object.Event(); var o = {x : 0,y : 0};
switch(arguments[0]){
case 0:/*マウスの相対位置*/
o.x = e.clientX;
o.y = e.clientY;
ケース 1:/*マウスの絶対位置*/
o.x = e.clientX Object.Scroll().Left;
o.y = e.clientY Object.Scroll().Top; ;
default:/*マウスの相対位置*/
o.x = e.clientX;
break;
>}
/*========================================== ===== ===========================================
【Ajax作成クラス】
作成日[2008-05-30]
更新日[2009-06-09]
var ajax = new AjaxRequest()
ajax.Url = "Test .aspx";
ajax.Content = "";
ajax.Fun = function(){alert("Extracting..");}
ajax.CallBack = function(e){
// 操作コード
var XmlDoc=e.responseText;
var Roots=XmlDoc.documentElement.childNodes; .text);
}
*/
XiaoFeng.AjaxRequest(){
var xmlhttp = false; var self = this ;
this.Url = "";
this.Async = true; Fun = function( ){return;};
this.CallBack = function(obj){return;}
this.Error = null;
this.Create = function(){//Create XMLHttpRequest
if(typeof(window.XMLHttpRequest)!="未定義"){
xmlhttp = new XMLHttpRequest();
if(xmlhttp.overrideMimeType)xmlhttp.overrideMimeType("text/html"); }else if( window.ActiveXObject){
var Versions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp "];
for(var i=0;itry{
var XmlHttp = new ActiveXObject(Versions[i]);
xmlhttp = XmlHttp;
}catch (Error){
if(i == (Versions.length-1))alert("エラー: サーバー オブジェクト インスタンスの作成に失敗しました。");//ブラウザの問題//エラーが発生します。説明
}
}
}
return xmlhttp;
}
this.Send = function(){
if(this.Url == ""){alert("処理アドレスを空にすることはできません!");}
xmlhttp = this.Create();
xmlhttp.open(this.Method,this.Url,true); if(this.Method == " post")xmlhttp .setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
if (xmlhttp.status == 200){
self.CallBack(xmlhttp);
}else{
alert("エラー: エラー コード [" xmlhttp.status "]"); 🎜>self.Error = "サーバー エラー [" xmlhttp.status "].";
clipboardData.setData("text",self.Url "?" self.Content); ;
}
}else
self.Fun();
}
if(this.Method.toLowerCase() == "post")
xmlhttp.send(this.コンテンツ);
else
xmlhttp.send(null)
}
}
/*================== ==== ============================================ ==== ==============
[XML オブジェクト クラスの作成]
[2008-04-09 作成]
var Http_Request=false
*/
function CreateAjax(){
var Ajax_Obj;
if(typeof(window.XMLHttpRequest) != "未定義"){
Ajax_Obj = new XMLHttpRequest(); .overrideMimeType)Ajax_Obj .overrideMimeType("text/html");
}else if(window.ActiveXObject){
var バージョン = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0"," MSXML2.XMLHttp. 3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];
for(var i=0;itry{
var XmlHttp= new ActiveXObject(Versions [i]);
Ajax_Obj = XmlHttp;
}catch(Error){
if(i == (Versions.length-1))alert("エラー: サーバーの作成に失敗しましたオブジェクト インスタンス [ブラウザの問題]。");//ブラウザの問題//Throws Error.description
}
}
}
return Ajax_Obj;
}
/*=== == =============================================== == =================================
[ロード XML 操作クラス]
[作成年] 2009-06-12]
*/
function LoadXml(Path){
if(XiaoFeng.userAgent().name == "Firefox"){
var Dom = document.implementation.createDocument (" ", "", null); Dom.async = false;
}else{
Dom = new ActiveXObject("Microsoft.XMLDOM");
Dom.async = false;
Dom.load(パス)
}
/*=========== == =============================================== == ========================
[Cookie操作クラス]
[2008-04-09作成]
* /
var Cookies = {
GetVal:f​​unction(offset){//Cookie
var endstr = document.cookie.indexOf(";", offset); のデコード値を取得します。 endstr = = -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
},
Add:function(name,value) ,hours ){//Cookie の値を設定します。
varexpire = "";
if(hours != null){
expire = new Date((new Date()).getTime() 時間 * 3600000 ) ;
期限切れ = "; 期限切れ = 期限切れ.toGMTString();
}
document.cookie = name "=" エスケープ(値) 期限切れ;
Del:function ( name){// Cookie の削除
var exp = new Date()
exp.setTime(exp.getTime() - 1);
var cval = GetCookie (name); . cookie = 名前 "=" cval "; 期限切れ = exp.toGMTString();,
Get:function(name){// Cookie の元の値を取得します
var cookieValue = "";
var search = name "=";
if(document.cookie.length > 0 ){
offset = document.cookie.indexOf(search);
if (offset != -1){
offset = search.length
end = document.cookie.indexOf(" ; ", offset);
if (end == -1) end = document.cookie.length;
cookieValue = unescape(document.cookie.substring(offset, end))
}
}
return cookieValue;
},
get:function(name){/*Cookie の元の値を取得します。ここでは主に C# の Cookie 配列に対応します*/
var reg = new RegExp ( "(^|&)" name "=([^&]*)(&|$)");
var = Cookies.Get("HTGL").match(reg); ( r != null) return unescape(r[2]);
return ""
}
}
/*//============; = ================================================ = ======================
//[オブジェクトの実際の座標を取得]
[2008-04-09 作成]
*/
function getDim(e){
var rd = {x:0,y:0};
do{
rd.x = e.offsetLeft; y = e.offsetTop;
e = e.offsetParent; while(e)
}
/*//========= ==== ============================================ ==== ======================
//[オブジェクトの親ノードを取得]
[2008-06-作成04]
*/
function getParent(o,N){
var e = new Object();
e = e.parentNode;
try{ if(e.tagName.toLowerCase() == N.toLowerCase())break;}catch(e){break;}
}while(e)
return
}
/ *//========================================= ====== =======================================
// [オブジェクトの実際の四隅座標を取得する]
[2008-10-09作成]
*/
function getInfo(o){//座標を取得
var to = new Object ();
to.left = .right=to.top=to.bottom=0;
var theight = o.offsetHeight; 🎜>to.left = o.offsetLeft;
to.top = o.offsetTop;
}while(o != document.body)
to.right = to.left twidth;

to.bottom = to.top theight;
}
/*//============ =========== ====================================== =========== ============
//[指定された文字に一致するオブジェクトを取得]
[2008-10-09 作成]
*/
function getObj( o,s){
f = false;
while(o != document.body){
if(o.id.toLowerCase().indexOf( s) != -1){
f = true;
}
o = o.offsetParent;
return f; /*======== ======================================= ========== ==============================
[パラメータ値の取得]
[2008-06-08 作成]
*/
var getQuery = XiaoFeng.getQuery = function(){
if(arguments.length == 0)return null; .length == 1){
var reg = new RegExp("(^|&)" argument[0] "=([^&]*)(&|$)"); window.location.search.substr(1) .match(reg);
if (r!=null) return unescape(r[2]);
}else{
var Reg = new RegExp(arguments[1] "=\w ","gi");
try{return argument[0].match(Reg).toString().split(",")[0] .split("=")[1] ;}catch(e){return null;}
}
}
/*================ ============ ===================================== ============ ============
【ドラッグ機能】
[2008-04-09]作成
*/
var Drag = XiaoFeng.Drag = function(o ){
var x,y;
y = getDim(o).y; = イベント.clientX - x;
var deltaY=event.clientY - y;
o.style.filter = "Alpha(Opacity=60)"; onmousemove = function(){
if(ドラッグ){
o.style.left=(event.clientX - deltaX) "px";
o.style.top=(event.clientY - deltaY) "px";
if(event.clientX - deltaX if(event.clientY - deltaY if(event.clientX - deltaX o.offsetWidth >= XiaoFeng.System.Size(0).x)o.style.left = (XiaoFeng.System.Size(0).x - o. offsetWidth) "px";
if(event.clientY - deltaY o.offsetHeight >= XiaoFeng.System.Size(0).y)o.style.top = (XiaoFeng.System.Size(0).y ​​- o.offsetHeight) "px";
o.setCapture();
}
}
o.onmouseup = function(){
o.style.filter = "Alpha(Opacity= 100)";
drag = false;
o.releaseCapture();
}
}
/*================= ============= ==================================== ============= ==========
[文字変換クラス]
[2008-04-09]作成
[2008年]更新-06-02]
*/
var StrToHtml = {
sTh:function(s){
s = s.replace(/,"/gi,">" );
s = s.replace(/"/gi,""");
s = s.replace(/&/gi,"& "); s = s.replace(/ /gi," "); return s;
},
hTs:function(s){
s = s.replace( /," s = s.replace(/>/gi,">");
s = s.replace(/\/gi,"""); >s = s.replace(/&/gi," &");
s = s.replace(/ /gi," ");
return
},
bTy: function(s){
s = s.replace (/[/gi,"s = s.replace(/]/gi,">"); 🎜>},
yTb:function(s) {
s = s.replace(/,"[");
s = s.replace(/,"[" );
s = s.replace(/> /gi,"]");
s = s.replace(/>/gi,"]"); /gi," ");
リターン
} ,"}
/*=========================================== === =============================================
【フォームの幅と高さを取得する】
主に一部のシステムメソッド
*/
XiaoFeng.System = {
Event: function(){
var e = Object.Event ();
var o = {x : 0,y : 0};
switch(arguments[0]){
case 0 :/*マウスの相対位置*/
o.x = e .clientX;
o.y = e.clientY;
case 1:/*マウスの絶対位置*/
o.x = e.clientX Object.Scroll().Left; o.y = e.clientY Object.Scroll().Top;
break;
default:/*マウスの相対位置*/
o.x = e.clientX;
break;
}
return o;
},
Size : function(){//[フォームの幅と高さを取得]
var s = {x : 0,y : 0};
if(window.innerWidth){
s.x = window.innerWidth;
s.y = window.innerHeight; ){
if(arguments[0] == 1){
s.x = document.body.clientWidth;
s.y = document.body.clientHeight;
}else if(arguments[0] = = 2){
s.x = parseInt(document.documentElement.clientWidth) parseInt(document.documentElement.scrollLeft);
s.y = parseInt(document.documentElement.clientHeight) parseInt(document.documentElement.scrollTop); >}else{
s.x = document.documentElement.clientWidth;
s.y = document.documentElement.clientHeight;
}
}else if(document.body){
if(arguments[0] ] == 1){
s.x = document.body.scrollWidth;
s.y = document.body.scrollHeight
}else if(arguments[0] == 2){
s.x = ドキュメント。 body.clientWidth document.body.scrollLeft;
s.y = document.body.clientHeight document.body.scrollTop;
s.x = document.body.clientWidth; .clientHeight;
}
}
return s;
},
Scroll : function(){//[フォームのスクロールバーを取得]
var s = {x : 0,y : 0};
if(document.compatMode=='CSS1Compat'){
s.x = document.documentElement.scrollTop;
s.y = document.documentElement.scrollLeft; if(document.body){
s.x = document.body.scrollTop;
s.y = document.body.scrollLeft;
return
},
getRnd : 関数(){return Math.floor( Math.random()*1000000);}
}
/*======================= ========= ======================================== ========= ==========
[ファイル名とファイル拡張子を取得]
[2009-04-20]
*/
関数FileType(FName){
FName = FName.replace(/\/gi,"/");
FName = FName.substr(FName.lastIndexOf("/") 1); : FName.substr(0, FName.indexOf(".")),Type : FName.substr(FName.indexOf(".") 1)};
}
/*====== ======= ========================================== ======= ============================
[選択ウィンドウを開いて保存ウィンドウを開く]
[2009-05-28]
最初のメソッド:
var Dialog = new XiaoFeng.Dialog("ファイルを選択してください", "txt ファイル (*.txt)|*.txt|すべてのファイル (*.* )|*.*", ".txt");
2 番目のメソッド:
varダイアログ = new XiaoFeng.Dialog({
タイトル: "ファイルを選択してください",
フィルター: "txtファイル (*.txt) |*.txt|すべてのファイル (*.*)|*.*",
DefaultExt : ".txt"
});
dialog.Open();
注: パラメータは異なる場合があります。入力するとデフォルトになります。
*/
XiaoFeng.Dialog = function(){
this.DialogTitle = "開くファイルを選択してください";
this.DialogFilter = "Excel ファイル(*.xls)|*.xls|すべてのファイル(*.*)|*.*";
this.DialogDefaultExt = ".xls";クエリ = 引数;
var self = this ;
this.Init = function(){
if(typeof self.Query[0] == "string"){
self.DialogTitle = self .Query[0]?self.Query[0 ]:self.DialogTitle;
self.DialogFilter = self.Query[1]?self.Query[1]:self.DialogFilter;
self.DialogDefaultExt = self .Query[2]?self.Query[2 ]:self.DialogDefaultExt;
}else if(typeof self.Query[0] == "オブジェクト"){
self.DialogTitle = self.Query[0] ].Title?self.Query[0].Title:self.DialogTitle;
self.DialogFilter = self.Query[0].Filter?self.Query[0].Filter:self.DialogFilter; .DialogDefaultExt = self.Query[0].DefaultExt ?self.Query[0].DefaultExt:self.DialogDefaultExt;
}
try{
if(!$("Dialog_OpenSave")){
var _Dialog_Open = $C("オブジェクト") ;
_Dialog_Open.id = "Dialog_OpenSave";
_Dialog_Open.classid = "CLSID:F9043C85-F6F2-101A-A3C9-08002B2F49FB"; .display = "none";
ドキュメント .body.appendChild(_Dialog_Open);
$("Dialog_OpenSave").CancelError = true;
this.Open = function() {
$("Dialog_OpenSave").DialogTitle = this.DialogTitle;
$("Dialog_OpenSave").Filter = this.DialogFilter; Dialog_OpenSave").DefaultExt = this.DialogDefaultExt;
$("Dialog_OpenSave").ShowOpen();
return $("Dialog_OpenSave").FileName;
}
this.Save = function( ){
$("Dialog_OpenSave") .DialogTitle = this.DialogTitle.replace("Open","Save");
$("Dialog_OpenSave").Filter = this.DialogFilter; "Dialog_OpenSave").DefaultExt = this.DialogDefaultExt;
$("Dialog_OpenSave").FileName;
this.Init() ;
}
/*=========================================== === =============================================
【 無限ドロップダウン リスト 】
[2009-06-13]
ドロップダウン リストを配置する場所にコントロールを配置します (通常は非表示フィールドです)
XML をデータ ソースの場合は、XML フォームを直接呼び出すことができます。
var XMLDOM = LoadXml("CreateXML.ashx?RootId=15&sd=101");
Root = XMLDOM.documentElement;
Ajax を使用して呼び出すこともできます。データソースを作成します
var ajax = new XiaoFeng.AjaxRequest();
ajax.Url = "CreateXML.ashx?RootId=15&sd=101"; >if(e.Error != "未定義")return ;
var Root = e.responseXML.documentElement;
var ClassSelect = new SelectClass();
ClassSelect.Name = "ClassId";
ClassSelect.FirstOption = [["==選択してください==","0"]];
ClassSelect.SelectFirst = true; = function(e){}
ClassSelect.Select = "101";

パラメータの説明: ソースはドロップダウン リストです。
名前は非表示のコントロール ID で、通常は非表示のフィールドです。
FirstOption は、リストの最初の行に表示されるテキストです。それぞれに異なるテキストを指定できます。複数のテキストを設定します。例: [["==州を選択してください==,"0"],["==都市を選択してください==,"0"],["==郡を選択してください= =","0"]] FirstOption = "" または FirstOption = [] の場合、これらの単語は表示されません。デフォルトは [["== Please select ==",""]] です。
SelectFirst は true読み込み後に設定するテキストを表示するかどうか。False はデータの最初の行を表示するか、設定された行を表示するかです。
Fun この関数は、各ドロップダウン リストの onchange 選択イベントによってインターフェイスがトリガーされます。 function
選択のデフォルトは選択された属性の "" です
Run はこのカテゴリを実行します
*/
var SelectClass = XiaoFeng.SelectClass = function() {
this.Name = ""; 🎜>this.Source = new Object();
this.FirstOption = [["==選択してください==","0"]];
this.SelectFirst = true; = "";
this.Fun = function(e){return;}
this.Run = function(){
if(!$( this.Name)){
var _Input = $C("input");
_Input.type = "hidden";
_Input.id = this .Name; _Input);
}
$(this.Name).value = this.Select;
if(this.Source == "object")
if(this.Source.hasChildNodes){
this.CreateSelect(this.Source);
if(this.Select == ""){
var __Select = $(this.Name) .parentNode.getElementsByTagName("select"); >if(this.SelectFirst)
$(this.Name).value = __Select[__Select.length - 1].value;
else
$ (this.Name).value = __Select[__Select. length - 1].options[1].value;
}
}else{
var _Span = $C("span");
_Span.innerHTML = "データ ソースが空です。 ";
$(this.Name).parentNode.appendChild(_Span);
}
else{
var _Span = $C("span");
_Span.innerHTML = "データソースにエラーがあります。";
$(this.Name).parentNode.appendChild(_Span);
}
}
this.CreateSelect = function(node){
if(!node.hasChildNodes){ this._SelectFirstName();return;}
var Select = $C("select");
Select.id = Select.name = "select_" (new Date().getTime()); >var _f = false,_s = 0;
if(typeof this.FirstOption == "string")this.FirstOption = [];
if(typeof this.FirstOption == "object" && this.FirstOption .length > 0)
Select.add(this.CreateOption("==请选择==","0",false));
for(var i = 0;i if(node.childNodes[i].getAttribute("s") == null){_f = false;}else{_f = true;_s = i;} Select.add( this.CreateOption(node.childNodes[i].getAttribute("Name"),node.childNodes[i].getAttribute("Id"),_f));
}
$(this.Name)。 parentNode.insertBefore(Select,$(this.Name));
if(_s > 0)
this.CreateSelect(node.childNodes[_s]);
else{
this.CreateSelect( node.childNodes[0]);
if(this.SelectFirst)
if(this.FirstOption.length == 0)
Select.options[0].selected = true;
else
Select.options[1].selected = true;
}
}
this.CreateOption = function(t,v,f){
var OptionSub = new Option();
OptionSub.text = t;
OptionSub.value = v;
if(f)OptionSub.selected = f;
OptionSub を返します;
}
this._SelectFirstName = function(){
var _Select = $(this.Name).parentNode.getElementsByTagName("select");
var self = this,_f = true;
var _FirstOption = [],_FirstLength = this.FirstOption.length;
if(this.FirstOption.length == 0)_f = false;
for(var i = 0;i if(_f){ if(i >= _FirstLength)
_FirstOption = this.FirstOption[0];
else
_FirstOption = this.FirstOption[i];
_Select[i].options[0].text = _FirstOption[0];
_Select[i].options[0].value = _FirstOption[1];
}
if(i == _Select.length - 1)
_Select[i].setAttribute("onchange",function(){
var __Select = this.parentNode.getElementsByTagName("select ");
$(self.Name).value = __Select[__Select.length - 1].value;
if(self.FirstOption.length != 0 && this.selectedIndex == 0)
if(_Select.length > 1)
$(self.Name).value = __Select[__Select.length - 2].value
self.Fun(this);
else
_Select[i].setAttribute("onchange",function(){
self._RemoveSelect(this);
self._SelectNode(self.Source,this.value);
var __Select = this.parentNode.getElementsByTagName("select");
if(self.SelectFirst){
$(self.Name).value = __Select[__Select.length - 1].value; >}else
$(self.Name).value = __Select[__Select.length - 1].options[1].value;
if(self.FirstOption.length != 0 && this.selectedIndex == 0)
if(_Select.length > 1)
$(self.Name).value = __Select[__Select.length - 2].value
self.Fun(this); );
}
}
this._SelectNode = function(node,s){
for(var i = 0;i if(node.childNodes [i].getAttribute("Id") == s)
this.CreateSelect(node.childNodes[i]);
else
if(node.childNodes[i].hasChildNodes)this._SelectNode(node.childNodes[i],s); }
this._RemoveSelect = function(o){
var _Select = $(this.Name).parentNode.getElementsByTagName("select");
var _f = false;
for(var i = 0;i if(_Select[i] == o){_f = true;Continue;}
if(_f){_Select[ i].parentNode.removeChild(_Select[i]);i--;}
}
} }

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java フレームワークの商用サポートの費用対効果を評価する方法 Java フレームワークの商用サポートの費用対効果を評価する方法 Jun 05, 2024 pm 05:25 PM

Java フレームワークの商用サポートのコスト/パフォーマンスを評価するには、次の手順が必要です。 必要な保証レベルとサービス レベル アグリーメント (SLA) 保証を決定します。研究サポートチームの経験と専門知識。アップグレード、トラブルシューティング、パフォーマンスの最適化などの追加サービスを検討してください。ビジネス サポートのコストと、リスクの軽減と効率の向上を比較検討します。

PHP フレームワークの軽量オプションはアプリケーションのパフォーマンスにどのような影響を与えますか? PHP フレームワークの軽量オプションはアプリケーションのパフォーマンスにどのような影響を与えますか? Jun 06, 2024 am 10:53 AM

軽量の PHP フレームワークは、サイズが小さくリソース消費が少ないため、アプリケーションのパフォーマンスが向上します。その特徴には、小型、高速起動、低メモリ使用量、改善された応答速度とスループット、および削減されたリソース消費が含まれます。 実際のケース: SlimFramework は、わずか 500 KB、高い応答性と高スループットの REST API を作成します。

PHP フレームワークの学習曲線は他の言語フレームワークと比較してどうですか? PHP フレームワークの学習曲線は他の言語フレームワークと比較してどうですか? Jun 06, 2024 pm 12:41 PM

PHP フレームワークの学習曲線は、言語熟練度、フレームワークの複雑さ、ドキュメントの品質、コミュニティのサポートによって異なります。 PHP フレームワークの学習曲線は、Python フレームワークと比較すると高く、Ruby フレームワークと比較すると低くなります。 Java フレームワークと比較すると、PHP フレームワークの学習曲線は中程度ですが、開始までの時間は短くなります。

Golang フレームワークのドキュメントのベスト プラクティス Golang フレームワークのドキュメントのベスト プラクティス Jun 04, 2024 pm 05:00 PM

明確で包括的なドキュメントを作成することは、Golang フレームワークにとって非常に重要です。ベスト プラクティスには、Google の Go コーディング スタイル ガイドなど、確立されたドキュメント スタイルに従うことが含まれます。見出し、小見出し、リストなどの明確な組織構造を使用し、ナビゲーションを提供します。スタート ガイド、API リファレンス、概念など、包括的で正確な情報を提供します。コード例を使用して、概念と使用法を説明します。ドキュメントを常に最新の状態に保ち、変更を追跡し、新機能を文書化します。 GitHub の問題やフォーラムなどのサポートとコミュニティ リソースを提供します。 API ドキュメントなどの実践的なサンプルを作成します。

Java フレームワークのパフォーマンス比較 Java フレームワークのパフォーマンス比較 Jun 04, 2024 pm 03:56 PM

ベンチマークによると、小規模で高性能なアプリケーションの場合、Quarkus (高速起動、低メモリ) または Micronaut (TechEmpower に優れた) が理想的な選択肢です。 SpringBoot は大規模なフルスタック アプリケーションに適していますが、起動時間とメモリ使用量が若干遅くなります。

さまざまなアプリケーションシナリオに最適な Golang フレームワークを選択する方法 さまざまなアプリケーションシナリオに最適な Golang フレームワークを選択する方法 Jun 05, 2024 pm 04:05 PM

アプリケーションのシナリオに基づいて最適な Go フレームワークを選択します。アプリケーションの種類、言語機能、パフォーマンス要件、エコシステムを考慮します。一般的な Go フレームワーク: Jin (Web アプリケーション)、Echo (Web サービス)、Fiber (高スループット)、gorm (ORM)、fasthttp (速度)。実際のケース: REST API (Fiber) の構築とデータベース (gorm) との対話。フレームワークを選択します。主要なパフォーマンスには fasthttp、柔軟な Web アプリケーションには Jin/Echo、データベース インタラクションには gorm を選択してください。

golang フレームワーク開発の実践的な詳細な説明: 質疑応答 golang フレームワーク開発の実践的な詳細な説明: 質疑応答 Jun 06, 2024 am 10:57 AM

Go フレームワーク開発における一般的な課題とその解決策は次のとおりです。 エラー処理: 管理にはエラー パッケージを使用し、エラーを一元的に処理するにはミドルウェアを使用します。認証と認可: サードパーティのライブラリを統合し、資格情報を確認するためのカスタム ミドルウェアを作成します。同時処理: ゴルーチン、ミューテックス、チャネルを使用してリソース アクセスを制御します。単体テスト: 分離のために getest パッケージ、モック、スタブを使用し、十分性を確保するためにコード カバレッジ ツールを使用します。デプロイメントとモニタリング: Docker コンテナを使用してデプロイメントをパッケージ化し、データのバックアップをセットアップし、ログ記録およびモニタリング ツールでパフォーマンスとエラーを追跡します。

Golang フレームワークのパフォーマンス比較: 賢明な選択を行うための指標 Golang フレームワークのパフォーマンス比較: 賢明な選択を行うための指標 Jun 05, 2024 pm 10:02 PM

Go フレームワークを選択する場合、主要業績評価指標 (KPI) には、応答時間、スループット、同時実行性、リソース使用量が含まれます。フレームワークの KPI をベンチマークして比較することで、開発者は、予想される負荷、パフォーマンスが重要なセクション、リソースの制約を考慮しながら、アプリケーションのニーズに基づいて情報に基づいた選択を行うことができます。

See all articles