ホームページ > 記事 > ウェブフロントエンド > JavaScript フレームワークの概要 個人的な職歴_JavaScript スキル
/*************************************************** * ************************************* 著者: 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: '(?:
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;i
},
add : function(v){//
for(var i=0; i
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;i
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;i
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;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;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(); ;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;i
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);
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;i
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);
}else{
Dom = new ActiveXObject("Microsoft.XMLDOM");
Dom.async = false;
Dom.load(パス)
}
/*=========== == =============================================== == ========================
[Cookie操作クラス]
[2008-04-09作成]
* /
var Cookies = {
GetVal:function(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--;}
}
} }