javaScript基本用法D

 /*
 * 7_1 Ajax対象を取得する
 */
function newXMLHttpRequest() {
 var xmlreq = null;
 if (window.XMLHttpRequest) {
  // 非Microsoft browsersの場合
  xmlreq = new XMLHttpRequest();
 } else if (window.ActiveXObject) {
  // Microsoft browsersの場合
  try {
   xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e1) {
   try {
    xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (e2) {
    xmlreq = null;
   }
  }
 }
 if (xmlreq == null) {
  if (!orteusSubmitStatus) {
   alert("XMLHTTPRequest対象作成に失敗しました!");
  }
 }
 return xmlreq;
}

/*
 * 7_2 処理内容をサーバに送信する
 */
function sendRequest (method, url, data, async, callback, thisObj, srcObjs, destObjs, runJsStatus) {
 gAjaxExecStatus = true;
 var xmlreq = newXMLHttpRequest();
 xmlreq.open(method, url, async);
 xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 xmlreq.setRequestHeader("If-Modified-Since","0");
 xmlreq.onreadystatechange = function() {
  // サーバが処理完了 且つ 正常処理の場合でcallback処理を行う
  if (xmlreq.readyState == 4) {
   if (xmlreq.status == 200) {
    // XML文字列版
    var ajaxXml = xmlreq.responseXML;
    var ajaxResponse = ajaxXml.getElementsByTagName("ajax-response")[0];
    callback(ajaxResponse, thisObj, srcObjs, destObjs, runJsStatus);
   } else {
    gAjaxExecStatus = false;
    if (!orteusSubmitStatus) {
     alert("サーバ処理に失敗しました!");
    }
   }
  }
 }
 xmlreq.send(data);
}

/*
 * 7_3 共通用のAjaxメソッドを呼び出す
 */
function callAjax(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback) {
 // Jsでテキストボックス、テキストエリアに内容を設定する時に、Ajax処理が実行できるかどうかの判断
 // 上記以外の場合、gCanExecAjaxStatusが必ずtrueのため、Ajax処理を必ず実行する
 if (!gCanExecAjaxStatus) {
  gCanExecAjaxStatus = true;
  return;
 }
 switch (runJsStatus) {
  case CT_DISP_CONTENT :
   callAjaxDispComm(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback);
   break;
  case CT_SCTBOX_BLANK_CDE_NAM :
  case CT_SCTBOX_NOBLANK_CDE_NAM :
  case CT_SCTBOX_BLANK_ONLY_NAM :
  case CT_SCTBOX_NOBLANK_ONLY_NAM :
   callAjaxSctBox(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback);
   break;
  default :
   break;
 }
}

/*
 * 7_4 画面にDB内容を表示するAjaxの呼び出し
 */
function callAjaxDispComm(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback) {
 if (isBlankOrNull(callback)) {
  callback = setAjaxDispContent;
 }

 if (isBlankOrNull(url)) {
  // Java側の共通処理の設定
  url = "/AjaxCommonServlet.ajax";
 }
 var ajaxUrl = gContextPath + url + getQueryString(srcObjs, runJavaStatus);
 sendRequest("get", ajaxUrl, null, true, callback, thisObj, srcObjs, destObjs, runJsStatus);

}

/*
 * 7_5 Ajaxからの返却値を画面項目に設定【XML文字列版】
 */
function setAjaxDispContent(ajaxResponse, thisObj, srcObjs, destObjs, runJsStatus) {
 var ajaxStatus = "";
 try {
  ajaxStatus = ajaxResponse.getElementsByTagName("status")[0].firstChild.nodeValue;
 } catch (e) {
  // 何もしない
 }
 if (ajaxStatus == "true") { // 正常の場合
  var contents = ajaxResponse.getElementsByTagName("content");
  var contCnt = contents.length;
  var destIndex = 0;
  for (var i = 0; i < contCnt; i++) {
   var items = contents[i].getElementsByTagName("item");
   var itemCnt = items.length;
   for (var j = 0; j < itemCnt; j++) {    
    try {
     // 4/10 修正 ここから
     //var val = items[j].getElementsByTagName("value")[0].firstChild.nodeValue;
     var val = "";
     try {
      val = items[j].getElementsByTagName("value")[0].firstChild.nodeValue;
     } catch (e) {}
     // 4/10 修正 ここまで
     var obj = destObjs[destIndex];
     var objCnt = obj.length;
     if (objCnt == null) { // 対象は画面の項目
      setValue(obj, val);
     } else { // 対象は配列の場合
      for (var k = 0; k < objCnt; k++) {
       setValue(obj[k], val);
      }
     }
    } catch (e) { // NULLの場合
     // 何もしない
    }
    destIndex++;
   }
  }
  setObjsColor(srcObjs, NORMAL_COLOR);
 } else if (ajaxStatus == "false") { // 異常の場合
  setObjsColor(srcObjs, ERROR_COLOR);
  clearValue(destObjs);
 } else if (ajaxStatus == "SESSION_TIME_OUT") { // タイムアウトの場合
  window.location = gContextPath + "/SessionTimeout.jsp";
 }
 
 // 4/17 追加 ここから
 var kytRefAuth = "";
 var btnStatus = "";
 var callback = "";
 try {
  kytRefAuth = ajaxResponse.getElementsByTagName("auth-value")[0].firstChild.nodeValue;
  btnStatus = ajaxResponse.getElementsByTagName("btn-status")[0].firstChild.nodeValue;
  callback = ajaxResponse.getElementsByTagName("callback")[0].firstChild.nodeValue;
 } catch (e) {
  // 何もしない
 }
 if (!isBlankOrNull(kytRefAuth)) {
  setBtnStatus(parseInt(kytRefAuth), btnStatus, callback);
 }
 // 4/17 追加 ここまで
 
 gAjaxExecStatus = false;
}

/*
 * 7_6 画面の項目の値のクリア(select box内容動的なクリアを除く)
 */
function clearValue(objs) {
 var len = objs.length;
 for (var i = 0; i < len; i++) {
  var obj = objs[i];
  try {
   var len2 = obj.length;
   if (len2 == null) { // 対象は画面の項目
    setValue(obj, "");
   } else { // 対象は配列の場合
    for (var j = 0; j < len2; j++) {
     setValue(obj[j], "");
    }
   }
  } catch (e) { // NULLの場合
   // 何もしない
  }
 }
}

/*
 * 7_7 画面の項目の値の設定(select box内容動的な設定を除く)
 * ・span、divの場合、innerTextで設定
 * ・checkbox、radioboxの場合、checkedで設定
 * ・textbox、hiddenの場合、valueで設定
 * ・selectboxの場合、valueで設定(selectboxの内容が動的に設定されるのは、対応していない)
 */
function setValue(obj, val) {
 if (obj != null) {
  var tagName = obj.tagName.toUpperCase();
  var type = obj.type;
  if (tagName == "SPAN" || tagName == "DIV") {
   if (isBlankOrNull(val)) {
    val = " ";
   }
   obj.innerText = val;
  } else if (type == "checkbox" || type == "radio") {
   if (obj.value == val) {
    if (!obj.checked) {
     obj.checked = true;
     setObjChange(obj);
    }
   } else {
    if (obj.checked) {
     obj.checked = false;
     setObjChange(obj);
    }
   }
  } else if (type == "text" || type == "hidden" || type == "file" || type == "password" || type == "textarea") {
   if (type != "hidden") {
    setText(obj, val);
   } else {
    obj.value = val;
   }
  } else if (type == "select-one") {
   if (obj.value != val) {
    obj.value = val;
    setObjChange(obj);
   }
  }
 }
}

/*
 * 7_8 リストボックスのAjaxの呼び出し
 */
function callAjaxSctBox(thisObj, srcObjs, destObjs, runJavaStatus, url, callback, runJsStatus) {
 if (isBlankOrNull(callback)) {
  callback = setAjaxSctBox;
 }

 if (isBlankOrNull(url)) {
  // Java側の共通処理の設定
  url = "/AjaxCommonServlet.ajax";
 }
 var ajaxUrl = gContextPath + url + getQueryString(srcObjs, runJavaStatus);
 sendRequest("get", ajaxUrl, null, true, callback, thisObj, srcObjs, destObjs, runJsStatus);

}

/*
 * 7_9 リストボックスにAjaxからの返却値を設定【XML文字列版】
 */
function setAjaxSctBox(ajaxResponse, thisObj, srcObjs, destObjs, runJsStatus) {
 clearSctBox(destObjs);
 var ajaxStatus = "";
 try {
  ajaxStatus = ajaxResponse.getElementsByTagName("status")[0].firstChild.nodeValue;
 } catch (e) {
  // 何もしない 
 }
 if (ajaxStatus == "true") { // 正常の場合
  var sctBoxes = ajaxResponse.getElementsByTagName("content");
  var sctBoxCnt = sctBoxes.length;
  for (var i = 0; i < sctBoxCnt; i++) {
   var items = sctBoxes[i].getElementsByTagName("item");
   var itemCnt = items.length;
   var destSctBox = destObjs[i];
   if (runJsStatus == CT_SCTBOX_BLANK_CDE_NAM || runJsStatus == CT_SCTBOX_BLANK_ONLY_NAM) {
    destSctBox.options.add(new Option("", ""));
   }
   for (var j = 0; j < itemCnt; j++) {
    var name = "";
    var value = "";
    try {
     name = items[j].getElementsByTagName("name")[0].firstChild.nodeValue;
    } catch (e) {
     // 何もしない
    }
    try {
     value = items[j].getElementsByTagName("value")[0].firstChild.nodeValue;
    } catch (e) {
     // 何もしない
    }
    if (name != "" || value != "") {
     if (runJsStatus == CT_SCTBOX_BLANK_CDE_NAM || runJsStatus == CT_SCTBOX_NOBLANK_CDE_NAM) {
      destSctBox.options.add(new Option(name + ":" + value, name));
     } else if (runJsStatus == CT_SCTBOX_BLANK_ONLY_NAM || runJsStatus == CT_SCTBOX_NOBLANK_ONLY_NAM) {
      destSctBox.options.add(new Option(value, name));
     }
    }
   }
   setObjChange(destSctBox);
  }
  setObjsColor(srcObjs, NORMAL_COLOR);
 } else if (ajaxStatus == "false") { // 異常の場合
  setObjsColor(srcObjs, ERROR_COLOR);
 } else if (ajaxStatus == "SESSION_TIME_OUT") { // タイムアウトの場合
  window.location = gContextPath + "/SessionTimeout.jsp";
 }
 gAjaxExecStatus = false;
}

/*
 * 7_10 リストボックスのクリア
 */
function clearSctBox(objs) {
 var len = objs.length;
 for (var i = 0; i < len; i++) {
  objs[i].options.length = 0;
  setObjChange(objs[i]);
 }
}

/*
 * 7_11 Request用の引数の取得
 */
function getQueryString(srcObjs, runJavaStatus) {
 var queryString = "?runStatus=" + escape(runJavaStatus);
 var len = srcObjs.length;
 for (var i = 1; i <= len; i ++) {
  if (srcObjs[i - 1] == null) {
   queryString += "&srcValue" + i + "=";
  } else {
   var type = srcObjs[i - 1].type;
   if (type == null) {
    queryString += "&srcValue" + i + "=" + escape(srcObjs[i - 1]);
   } else {
    if (type == "text" || type == "password" || type == "checkbox"
      || type == "radio" || type == "file" || type == "hidden"
      || type == "select-one" || type == "textarea") {
     queryString += "&srcValue" + i + "=" + escape(srcObjs[i - 1].value);
    }
   }
  }
 }
 return queryString;
}

///
function setObjsColor(objs, colorType) {
 var len = objs.length;
 for (var i = 0; i < len; i ++) {
  if (objs[i] != null) {
   var type = objs[i].type;
   if (type == "text" || type == "password" || type == "checkbox"
     || type == "radio" || type == "file" || type == "select-one" || type == "textarea") {
    setFieldColor(objs[i], colorType);
   }
  }
 }
}

function setObjChange(obj) {
 gCanExecAjaxStatus = false;
 obj.fireEvent('onchange');
 gCanExecAjaxStatus = true;
}

function setBtnStatus(kytRefAuth, btnStatus, callback) {
 // ボタンオブジェクトの取得
 var objBtnSearch = document.getElementById("btnSearch");
 if (objBtnSearch == null) {
  objBtnSearch = document.getElementById("btnSelect");
 }
 var objBtnNew = document.getElementById("btnNew");
 var objBtnFKey5 = document.getElementById("btnFKey5");
 var objBtnFKey9 = document.getElementById("btnFKey9");
 var objBtnFKey11 = document.getElementById("btnFKey11");
 var objBtnFKey12 = document.getElementById("btnFKey12");
 
 // 業務的にボタン制御を行う
 var objBtnArr = new Array(objBtnSearch, objBtnNew, objBtnFKey5, objBtnFKey9, objBtnFKey11, objBtnFKey12);
 var len = btnStatus.length;
 for (var i = 0; i < len; i++) {
  if (objBtnArr[i] != null) {
   if (btnStatus.charAt(i) == "1") {
    objBtnArr[i].disabled = false;
   } else {
    objBtnArr[i].disabled = true;
   }
  }
 }
 
 // 共通的にボタン制御を行う
 switch (kytRefAuth) {
 case 1 :
  // 拠点参照権限が1の場合、全部のボタンを利用可にする
  // 共通的に制御を行わなく、業務的な制御のままでいい
  break;
 case 2 :
  // 拠点参照権限が2の場合
  // 「F9 CSV出力」ボタンを利用不可にする
  if (objBtnFKey9 != null) { objBtnFKey9.disabled = true; }
  // 他のボタンを全部利用可にする
  // 共通的に制御を行わなく、業務的な制御のままでいい
  break;
 case 3 :
  // 拠点参照権限が3の場合
  // 「検索」と「F11 印刷」ボタンを利用可にする
  // 共通的に制御を行わなく、業務的な制御のままでいい

  // 他のボタンを全部利用不可にする
  if (objBtnNew != null) { objBtnNew.disabled = true; }
  if (objBtnFKey5 != null) { objBtnFKey5.disabled = true; }
  if (objBtnFKey9 != null) { objBtnFKey9.disabled = true; }
  if (objBtnFKey12 != null) { objBtnFKey12.disabled = true; }
  break;
 case 0 :
 default :
  // 拠点参照権限が0 或は 0、1、2、3以外の場合、全部のボタンを利用不可にする
  if (objBtnSearch != null) { objBtnSearch.disabled = true; }
  if (objBtnNew != null) { objBtnNew.disabled = true; }
  if (objBtnFKey5 != null) { objBtnFKey5.disabled = true; }
  if (objBtnFKey9 != null) { objBtnFKey9.disabled = true; }
  if (objBtnFKey11 != null) { objBtnFKey11.disabled = true; }
  if (objBtnFKey12 != null) { objBtnFKey12.disabled = true; }
  break;
 }
 
 // プログラムごとに項目を制御する
 if (isBlankOrNull(callback)) {
  callback = dummy;
 } else {
  callback = eval(callback);
 }
 callback(kytRefAuth);
}

function dummy(kytRefAuth) {}
///

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值