레이어 메뉴를 만들었다.
메뉴를 누르면 서브메뉴가 열렸을때는 서브메뉴를 닫고 서브메뉴가 닫혀있으면 서브메뉴가 열리는 형식의 메뉴..

하지만 메뉴외의 공간을 눌러도 메뉴를 닫아달라는 요청이 있었다.

간단하게 전체를 div로 주고 메뉴가 열렸을때 열린 메뉴를 닫아주라는 스크립트를 만들어서 해당 div에 onclick시 이벤트가 실행되도록 코드를 짰다.
But!!!! 문제가 생겼다...메뉴가 아예 안열리는것이 아닌가..-ㅁ-!!!

그렇다..메뉴 클릭 이벤트가 전체 이벤트에 걸린것이다!! ㅠㅠ;;

하지만 해결 방법은 존재 했으니..이벤트번짐 방지-중복실행방지 이벤트인 cancelBubble
서브메뉴를 호출하는 함수 상단에 window.event.cancelBubble=true; 선언!!

좀 더 공부하고 정확한 이해가 필요한 유용한 함수 발견!! +ㅁ+

(위 사항에 대한 해결방법으로 메뉴를 레이어처리 후 전체 레이어에서 뺀다음 z-index를 주게 되면 전체 레이어에 해당되지 않으므로...전체 레이어에 걸어놓은 자바스크립트에 방해받지 않고 메뉴를 사용할 수 있다!)


- 참고(cencelBubble)
http://stylekai.tistory.com/124?srchid=BR1http%3A%2F%2Fstylekai.tistory.com%2F124
http://blog.naver.com/falconer00?Redirect=Log&logNo=90008192987
http://blog.naver.com/zeroscience?Redirect=Log&logNo=120060674558



이벤트 전파 방지하기 http://lovedev.tistory.com/337 (자바스크립트)

Posted by 귀찮은 여니씨
,

javascript에서 문자를 숫자형으로 변환하는 함수  parseInt() 함수

parseInt("00") ~ parseInt("07") => 0~7 정상적으로 나온다.
parseInt("08"), parseInt("09") => 0 으로 나온다.

parserInt() 함수 Syntax
parseInt(numstring, [radix])

0x 로 시작하면 16진수
01 등으로 0 으로 시작하면 8진수

10진수로 파싱하려면 parseInt("08",10) 과 같이 radix 를 명시 필요




출처: http://wizard.ncafe.net/wt/2277


* 자바스크립트 내장 함수 (escape, unescape, isFinite, isNaN) : http://badyouny.tistory.com/149
* 자바스크립트 형변환
    - 변수 문자화 String(변수);
    - 변수 정수화 Number(변수);
                        parseInt(변수);
    - 반올림        Math.round(변수);

Posted by 귀찮은 여니씨
,

escape() Method
문자셋을 아스키(ASCII) 값으로 반환해주는 자바스크립트 내장함수입니다.
이 함수는 쉼표와 세미콜론 같은 문자가 쿠키문자열과의 충돌을 피하기 위해 사용됩니다.
그리고 url을 인코딩 할때도 쓰이죠.
이렇게 16진수 문자열로 변환된 문자열은 unescape() 함수로 다시 되돌려줄 수 있습니다

 

 unescape() Method
escape()와 반대로 아스키 값을 문자셋으로 반환 자바스크립트 내장함수입니다.

 

isFinite() Method 
괄호안의 값이 유한수인지 무한수인지를 구별해주는 자바스크립트 내장 함수
유한수이면 true, 무한수이면 false를 보여줍니다.


isNaN() Method 
is Not a Number라는 뜻으로 괄호안의 입력값이 문자인지 숫자인지를 구별해주는
자바스크립트 내장 함수입니다.
문자이면 true, 숫자이면 false를 보여준다.


[출처]
자바스크립트 내장 함수 (escape, unescape, isFinite, isNaN)|작성자 깜스


자바스크립트]공통함수
[출처] [자바스크립트]공통함수|작성자 잠공주


var ter = isNaN(document.form01.ltt.value);

var ter = document.form01.ltt.value.replace( /[0-9]+/g, "" ).length == document.form01.ltt.value.length;
이렇게 바꿔보세요

1. ltt 의 값에서 숫자를 모두 지우고
2. 원래의 ltt 값의 문자길이와 숫자를 지운 ltt값의 문자길이를 비교하여 숫자가 포함되었는지 여부 알아냅니다. 

///////////////////////////////////////////////////////////////////////////
추가 질문에 대한 답변 

function lett(){
// 정규표현식 [^0-9] 와 [0-9] 를 이용
// [^0-9] 는 0 ~ 9 가 아닌 문자
// match 메서드는 주어진 정규표현식에 해당 하는 문자를 찾아줍니다.
// 즉, 아래 코드는 0~9 가 아닌문자 를 찾아봤는데 "== null" 암것도 없더라..
// 결국 모두 숫자일경우 isNumber 는 true 가 됩니다.
 var isNumber = document.form01.ltt.value.match( /[^0-9]+/g ) == null;
// 아래 코드는 0 ~ 9 까지의 숫자를 찾아봤는데 "!= null" 아무것도 없지 않더라..
// 즉, 모두 숫자인지 아닌지는 몰라도 숫자가 있더라가 됩니다.
// 결국 숫자가 포함되었다면 isMixed 는 true 가 됩니다.
 var isMixed = document.form01.ltt.value.match( /[0-9]+/g ) != null; 

 if( isNumber ){ // 위에서 찾은 모두 숫자냐?
  alert( "문자를 입력하세요" );
  document.form01.ltt.value = "";
 }else if( isMixed ){  // 모두 숫자도 아니라면 특정 문자에 숫자도 있느냐?
  alert( "문자만 입력하세요" );
  document.form01.ltt.value = "";
 }else{ // 모두 숫자도 아니고 특정문자에 숫자가 있지도 않으니 이것은 문자다
  top.content.form03.ler.value = document.form01.ltt.value;
 }

주석을 달긴했는데.. 만족할만한 답변이 되었는지...^^;
http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10105&eid=LefC5DzUUd+kjxw9MJDs39jO7WtpSJle&qb=7J6Q67CU7Iqk7YGs66a97Yq4IGlzTnVtYmVyKCk=&enc=utf8&pid=fjhvrdoi5UdsstFQyzNsss--002649&sid=SaXs2cbNpUkAAHAtd7o

Posted by 귀찮은 여니씨
,