function selectClick(){
 var form = document.basicInfoForm;
 var idx = form.shopNo.length;
 var opt = form.shopNo.options;
 for(var i=0; i<form.unselect.length; i++){
  if(form.unselect.options[i].selected==true){
   if(idx>0){
    for(var j=0; j<idx; j++){
     if(form.unselect.options[i].text==form.shopNo.options[j].text){
      alert('이미 선택한 shop입니다.');
      return ;
     }
    }
    alert('선택한 shop에 매장이 추가됩니다.');
    form.shopNo.length += 1;
    opt[idx] = new Option(form.unselect.options[i].text, form.unselect.options[i].value, false, false);
    form.unselect.selectedIndex =-1;
    return ;
   }else{
    alert('선택한 shop에 매장이 추가됩니다.');
    form.shopNo.length += 1;
    opt[idx] = new Option(form.unselect.options[i].text, form.unselect.options[i].value, false, false);
    form.unselect.selectedIndex =-1;
   }
  }
 }
}

function unSelectClick(){
 var form = document.basicInfoForm;
 var idx = form.unselect.length;
 var idx2 = form.shopNo.length;
 alert(idx2);
 
 if(idx2==null||idx2==''){
  alert('선택한 shop이 없습니다.');
  return ;
 }
 
 for(var i=0; i<idx2; i++){
  if(basicInfoForm.shopNo.options[i].selected==true){
   var shopNo = basicInfoForm.shopNo.options[i].value;
   var result = confirm('선택한 shop에서 본 매장이 삭제됩니다. 삭제하시겠습니까?');
   if(result==true){
    $.ajax({
     url: '/display/collection/deleteShopAjax.do',
     method: 'post',
     data: 'no='+'${basicInfo.collectionNo }'+'&shopNo='+shopNo,
     success: function(html){
      alert('매장과 shop의 연결이 삭제되었습니다.');      
      },
     error: function(){
      alert('Ajax popup open fail.');
      }
    });
    basicInfoForm.shopNo.options[i] = null;
    idx2 -= 1;
    i -= 1;
   }else{
    return ;
   }
  }
 }
}

Posted by zeide
,

왼쪽 메뉴를 선택해서 오른쪽 메뉴로 옮길 때

function selectClick(){
 var idx = basicInfoForm.shopName.length;
 var opt = basicInfoForm.shopName.options;
 
 for(var i=0; i<basicInfoForm.unselect.length; i++){
  if(basicInfoForm.unselect.options[i].selected==true){
   if(idx>0){
    for(var j=0; j<idx; j++){
     if(basicInfoForm.unselect.options[i].text==basicInfoForm.shopName.options[j].text){
      alert('이미 선택한 shop입니다.');
      return ;
     }else{
      basicInfoForm.shopName.length += 1;
      opt[idx] = new Option(basicInfoForm.unselect.options[i].text, basicInfoForm.unselect.options[i].value);
      basicInfoForm.unselect.options[i] = '';
      i -= 1;
     }
    }
   }else{
    basicInfoForm.shopName.length += 1;
    opt[idx] = new Option(basicInfoForm.unselect.options[i].text, basicInfoForm.unselect.options[i].value);
    basicInfoForm.unselect.options[i] = '';
    i -= 1;
   }
  }
 }
}

function unSelectClick(){
 var idx = basicInfoForm.unselect.length;
 var idx2 = basicInfoForm.shopName.length;
 
 if(idx2==null||idx2==''){
  alert('선택한 shop이 없습니다.');
  return ;
 }
 
 for(var i=0; i<idx2; i++){
  if(basicInfoForm.shopName.options[i].selected==true){
   basicInfoForm.shopName.options[i] = null;
   idx2 -= 1;
   i -= 1;
  }
 }
}

Posted by zeide
,

[Javascript] 랜덤함수

JSP 2010. 1. 19. 15:00
 function randomShow(){
  var num = new Array('1', '2', '3', '4', '5', '6', '7', '8');
  var result = num[Math.floor(Math.random()*num.length)];
  var img = document.getElementById('cate'+result);
  var img1 = document.getElementById('cate1');
  var param = 'LC00';
  img.src = '<%=_SIMAGE_ROOT_ %>/lotte/images/renewal/newzone/tab01_0'+result+'on.gif';
  param = param+result;
  
  if(result==7){
   categoryAjax('dpt');
  }else if(result==8){
   categoryAjax('young');
  }else{
   categoryAjax(param);
  }
 }
 

Posted by zeide
,

Ajax.Request로 하면 oncomplete으로 해당 업데이트 페이지를 연결해주는 함수가 있어야 하지만 Ajax.Updater를 사용하면 업데이트할 영역을 함수 내에 지정해주면 된다. 

function handleItem(param, id, total){
  var md = '';
  var li = 'md_cate'+id;
  
  for(var i=0;i<total;i++){
   md = 'md_cate'+(i+1);
   $(md).removeClassName('sel');
  }
  $(li).addClassName('sel');
  itemAjax(param);
 }

 function itemAjax(param){
  var url = '처리할 url;
  new Ajax.Updater(
  {success:'md_item_list', failure:'md_item_list'},//출력되는 영역
  url,
  {
   method:'POST',
   parameters: {disp_no:param}
  });
 }

Posted by zeide
,

버튼에 마우스오버하면 아래 화면이 변경될 때 사용.

그냥 아무 생각없이...메뉴가 많아지면 Ajax를 사용하는 편이 낫다.

function divRolling(obj){
  var div1 = $('new01');
  var div2 = $('new02');
  var div3 = $('new03');

  var img1 = $('img1');
  var img2 = $('img2');
  var img3 = $('img3');

  var path1 = '바뀌기 전 이미지경로';
  var path2 = '바뀐 후 이미지경로;

  if(obj=='2'){
   img1.src = path2;
   img2.src = path1;
   img3.src = path2;
   div1.hide();
   div3.hide();
   div2.appear({duration:0.3});
   return false;
  }else if(obj=='3'){
   img1.src = path2;
   img2.src = path2;
   img3.src = path1;
   div1.hide();
   div2.hide();
   div3.appear({duration:0.3});
   return false;
  }else{
   img1.src = path1;
   img2.src = path2;
   img3.src = path2;
   div2.hide();
   div3.hide();
   div1.appear({duration:0.3});
   return ;
  }
 }

Posted by zeide
,
한 가지 아이템만 보이고 나머지 아이템을 클릭으로 보이게 하는 함수.

<script type="text/javascript" src="/js/prototype.js"></script>
<script type="text/javascript" src="/js/effects.js"></script>
<script type="text/javascript">
 function moveItem(num, total){
  var num = num*1;
  var div = 'item'+num;
  var nextDiv = 'item'+parseInt(num+1);
  if(num>0&&num<total){
   $(div).hide();
   $(nextDiv).appear();
  }else if(num==total){
   $(div).hide();
   $('item1').appear();
  }
 }

 function moveItem2(num, total){
  var num = num*1;
  var total = total*1;
  var div = 'item'+num;
  var last = 'item'+total;
  if(num>1&&num<=total){
   var preDiv = 'item'+parseInt(num-1);
   $(div).hide();
   $(preDiv).appear();
  }else if(num==1){
   $(div).hide();
   $(last).appear();
  }
 }
</script>
Posted by zeide
,

[JSP] 스크립트 위치

JSP 2009. 2. 23. 22:30

1. 페이지를 로드할 때 동적으로 웹페이지의 컨텐트를 생성하는 경우에는 body 태그 안에 위치시키는 것이 좋다.

2. 함수 안에서 정의하고 page이벤트에 사용되는 자바스크립트 코드는 head 태그 안에 위치시키는 것이 좋다.
그렇게 해야 body 태그 안의 내용을 읽어들이기 전에 로드되기 때문이다.

DOM으로 컨텐트를 생성한 후 페이지 내의 엘리먼트에 붙이는 방법도 있다.

Posted by zeide
,
1. 로그인 메뉴 부분 추가
2. css로 속성 변경

<?xml version="1.0" encoding="EUC-KR"?>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
<title>test table</title>
<style type="text/css">
body{background-color:#ffffff;margin: 0;padding: 0;}
body,#fpage,#ttitle,#mtitle,#lmtitle,#cmtitle,#rmtitle,#btitle,#footer,a{font-family: 돋움,vernada;font-size:12px;}
input{border:1px solid #C3D9FF;font:normal 12px vernada,돋움;color:#4F4F30;}
accnt, accnt_admin{margin:0;padding:0;}
a{text-decoration:none;}
a:hover{text-decoration:none;}
#fpage{width: 935px;}
#ttitle{width: 100%;height:315px;background-color: #ff6600;}
#mtitle{width: 100%;height:510px;background-color: yellow;}
#lmtitle,#cmtitle,#rmtitle{height: 500px}
#lmtitle{position:relative;width: 25%;top:0:;left:0;float:left;background-color: #ffffff;}
#cmtitle{width: 50%;float:left;overflow: hidden;background-color: red;}
#rmtitle{width: 25%;float:left;background-color: blue;}
#btitle{height:58px;padding-left:220px;clear:both;background-color: green;}
#footer{}
#login{float: right;border-style:solid;border-color:#C3D9FF;border-width: 1px;background-color: #ffffff;margin: 10px;padding:2px}
.txtin{margin: 3px;width:100px;height:18px;}
.idchk{width: 1px;height:1px;}
.passin{margin:3px;width:100px;height:18px;}
.conin{margin:3px;background-color:#E5ECF9;height: 22px;width: 50px;}
</style>
</head>

<body>
<div id="fpage">
<!-- 상단  -->
<div id="ttitle">
<div id="login">
<form id="accnt">
<table bgcolor="#EFF3FC">
<tr>
<td><input type="text" name="id" class="txtin"/>
</td>
<td><input type="checkbox" class="idchk" value="chk"name="id기억"/>id기억
</td>
</tr>
<tr>
<td><input type="password" name="pword" class="passin"/>
</td>
<td><input type="button" class="conin" value="로그인"/>
<!-- 로그인 버튼은 나중에 이미지로 넣을 것 -->
</td>
</tr>
</table>
</form>
<p>
</p>
<form id="accnt_admin">
<table bgcolor="#EFF3FC">
<tr>
<td width="168px">
<a href="#void">id/password 찾기</a>
</td>
</tr>
<tr>
<td>
<a href="#void">회원가입</a>
</td>
</tr>
</table>
</form>
</div>
<div id="notice">
</div>
</div>
<!-- 중간  -->
<div id="mtitle">
<div id="lmtitle">
</div>
<div id="cmtitle">
</div>
<div id="rmtitle">
</div>
</div>
<!-- 하단 -->
<div id="btitle">
</div>
<!-- 하단 공백 -->
<div id="footer">
</div>
</div>
</body>
</html>
Posted by zeide
,
4단 레이아웃

<?xml version="1.0" encoding="EUC-KR" ?>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
<title>test table</title>
<style type="text/css">
body{background-color:#ffffff;margin: 0;padding: 0;}
body,#fpage,#ttitle,#mtitle,#lmtitle,#cmtitle,#rmtitle,#btitle,#footer{font-family: 돋움,vernada;}
#fpage{width: 935px;}
#ttitle{width: 100%;height:315px;background-color: #ff6600;}
#mtitle{width: 100%;height:510px;background-color: yellow;}
#lmtitle,#cmtitle,#rmtitle{height: 500px}
#lmtitle{position:relative;width: 25%;top:0:;left:0;float:left;background-color: #ffffff;}
#cmtitle{width: 50%;float:left;overflow: hidden;background-color: red;}
#rmtitle{width: 25%;float:left;background-color: blue;}
#btitle{height:58px;padding-left:220px;clear:both;background-color: green;}
#footer{}
</style>
</head>
<body>
<div id="fpage">
<div id="ttitle">
</div>

<div id="mtitle">
<div id="lmtitle">
</div>
<div id="cmtitle">
</div>
<div id="rmtitle">
</div>
</div>

<div id="btitle">
</div>
<div id="footer">
</div>
</div>
</body>
</html>


 
Posted by zeide
,
<script type="text/javascript">
function enter(){
 cnt = 0;
 isCheck = 0;
 var nmList = document.getElementsByTagName("input");
//null 카운트, yes값의 체크 카운트
  for(var i=0;i<nmList.length;i++){
     if(nmList[i].type=="radio"){
       if(nmList[i].value=="yes"&&nmList[i].checked){
          cnt++;
    }
    if(nmList[i].checked){
     isCheck++;
    }
   }
  }
//null체크 확인하기, 총 문항 = 15
  if(isCheck!=15){
   alert(15-isCheck + "개의 선택을 더 하셔야 합니다.");
    return;
  }
//조건에 따른 설문 결과
  if(cnt<=9){
   alert(cnt+"개 입니다. 당신은 "+"해당 문구");
  }
   else if(cnt>=10&&cnt<=12){
    alert(cnt+"개 입니다. 당신은 "+"해당 문구");
   }
    else{
     alert(cnt+"개 입니다. 당신은 "+"해당 문구");
    }
//라디오버튼 초기화
  for(var j=0;j<nmList.length;j++){
         if(nmList[j].type=="radio"){
             nmList[j].checked=false;
         }
     }
}
</script>


프로토타입

<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
//체크가 null인 경우 확인
function enter(){
  cnt=0;
  var isCheck=0;
  var radios = $$("input [type='radio']");
  
  for(var i=0;i<radios.length;i++){
   if(radios[i].checked&&radios[i].value=="yes"){
    cnt++;    
   }
   if(radios[i].checked) isCheck++;
  }
  
  if(isCheck!=15){
    alert(15-isCheck + "개의 선택을 더 하셔야 합니다.");
    return;
  }
  
  if(cnt<=9){
alert(cnt+"개 입니다. 당신은 "+"만년 사원, 인맥 관리에 더 신경 써야...");
   }
   else if(cnt>=10&&cnt<=12){
alert(cnt+"개 입니다. 당신은 "+"매니저 후보, CEO를 꿈꾼다면 좀 더 노력을...");
}
   else{
alert(cnt+"개 입니다. 당신은 "+"유능한 CEO 후보~");
}
//라디오버튼 초기화
  for(var j=0;j<nmList.length;j++){
         if(nmList[j].type=="radio"){
             nmList[j].checked=false;
         }
     }
}
</script>

Posted by zeide
,

[Javascript] 자바스크립트

JSP 2008. 12. 24. 17:00
* 객체 기반 언어
* 모든 브라우저 지원
* 클래스 생성 불가 - 만들어진 클래스를 사용, prototype
* 가변 데이터형 - 값을 입력할 때 데이터형 결정
* 에러 발생
* 클라이언트 값의 유효성 검증
* Ajax에서 필수
* <script>태그로 정의 - <script language = "javascript"> 또는 <script type = "text/javascript">
* 클라이언트 컴퓨터가 해석
* 스타일 형식 - <style type = "text/css"></style>
* 일반적으로 위치는 <head></head>
* 자바의 주석기능 사용가능 - //, /* */

1. 변수
1) 선언
var var_name;//var 생략가능
2) 할당
var var_name=value;
3) 사용
- 화면 출력 : document.write(value + value + var + ...);
이전 페이지가 삭제되고 출력하는 경우 발생
- 경고창 출력 : alert(value + value + var + ...);

2. 연산자
자바와 동일
1) 단항연산자
~ : 1의 보수 연산, 2진수로 바꿔서 계산
! : true -> false, false -> true
+ : 형식적 제공
- : 부호바꿈 연산자
++, --

2) 산술연산자

+, -, *, /, %

3) 시프트연산자 - bit밀기

<<, >>, >>>

4) 관계연산자

>, <, >=, <=, ==, !=

이중부호는 소요시간이 길어짐

5) 논리연산자

- 일반논리

&&(AND)

||(OR)

- 비트논리

&(AND) 상위비트가 1이고 하위비트가 1이면 1 반환

|(OR) 상위비트가 0이고 하위비트가 0이면 0 반환

^(XOR) 상위비트, 하위비트 둘 중 하나가 1이면 1반환

6) 삼항연산자(조건연산자)

( ?  :  )

7) 대입연산자

=(순수대입연산자)

+=, -=, *=, /=, %=(산술대입, 누적합)

<<=, >>=, >>>=(시프트대입연산자)

&=, !=, ^=(비트논리대입연산자)


3. 제어문

1) 조건문

if else, switch case

2) 반복문

for, while, do while

for(var i=0;i<10;i++){/* */}//javascript

for(int i=0;i<10;i++){/* */}//java

    3) 분기문

    break, continue, return


    4. 배열

    선언하면서 값 입력이 가능
    csv data를 만들고 사용하는 쪽이 편리

    5. 함수(function) - 메소드와 비슷
    행동을 미리 정의해두고 필요한 시점에 호출해서 사용 - 직접 호출 가능
    1) 정의
    function function_name(arg){/* body*/}
    2) 호출 - html body 호출 : 사용자의 동작에 의해서 호출된다.
    function_name();
     사용자 동작  속성   사용 태그
     body 태그 로드  onLoad  <body onLoad="f_name()"> 
     click  onClick  all tag 
     double click  ondblClick  all tag 
     키가 눌릴 때  onKeyDown  포커스를 가지는 컨트롤 
     키가 올라올 때  onKeyUp  포커스를 가지는 컨트롤 
     마우스가 들어올 때  onMouseOver  all tag 
     마우스가 나갈 때  onMouseOut  all tag 
     값 변경  onChange  <select onChange="f_name()"> 
     포커스를 잃었을 때  onBlur  포커스를 가지는 컨트롤 


    6. 값 얻기
    조건
    - form 태그가 반드시 존재 
    - control의 이름이 존재
    <form name="form_name">
    <input type="input_type" name="control_name">
    함수에서 컨트롤을 호출할 때 경로를 지정할 때 필요하다.
    function getName(){ 
            //   var name=window.document.frm.name.value;
            //   var name=document.frm.name.value;
                  var name=frm.name.value;
                 alert("name : "+name);
             }
    <body>
    <form name="frm">
    <input type="text" value="name">
    <input type="button" value="send" onclick="getName()">
    </form>
    </body>


    Posted by zeide
    ,