어제의 키워드 :

와이어프레임

Gnb = 글로벌네비게이션바

Lnb = 로컬네비게이션바

어제에 이어 화면설계 스토리보드를 짠다.

유저 모드와 관리자 모드를 생각해 만들어야 함.

회사에서는 한 페이지를 만드는데 하루가 걸리기도.

아이디의 경우 모든 경우의 수를 생각해 문구를 만들어야 함.

정확한 약속 패턴이 있는건 아니지만 이해하기 쉽게 만들어져야 한다.

내용은 간결하면서도 자세하게 많이 쓰기!

상품소개 → 한 페이지에 다 들어갈 수 없어 주로 나눔

내일은 관리자 부분을 할 예정인데 프로젝트 할 때도 드러나게 하면 좋음

어제 만든 로그인의 정보 입력 화면을 마저 만들어보았다.

두 가지 버전으로 회원가입을 요구하는 사이트이기 때문에 신경 써야 할 부분이 더 많았다.

 

Alert 창이 많아지는 경우 한 화면에서 다 보여줄 수가 없을 땐 이렇게 표 방식을 사용한다고 한다.

 

회원가입을 하기 전이나 정보를 다 입력한 후에 보이는 보안 인증 절차 화면도 이렇게 만들어지는 거였다.

 

다음은 쇼핑몰의 상품 소개로 넘어갔다.

 

이렇게 정보가 많아질 땐 페이지를 나눠야 가독성이 좋아질것 같다.

 

허위 신고에 대한 팝업창으로 오늘 수업은 마무리가 되었다. 팝업창 부분의 description은 직접 짜보라고 해 alert창도 넣어봤는데 강사님이 쓰시는 설명보다 계획적이고 자세하진 않은 것 같다.

지금하고 있는 게 거의 ppt 수업같긴 하지만 그래도 프로그래밍에서 가장 중요한 협업을 위한 기초를 배우는 과정이니 정신 놓지 말고 잘 들어야겠다.

맥으로 오라클 쓰기 정말 힘들다!

일단 오라클 자체는 여러 블로그를 뒤적거리며 어찌저찌 깔았다.

그리고 그보다 심한 난관은 바로.. 수업을 위해 새로운 계정을 생성하는 것이었다..!!!!

 

scott계정은 워낙 흔하게 쓰여서인지 버전 상관없이 그나마 쉽게 생성했지만

hr 계정인가 oe 계정인가는.. 대체 어떻게 깔라는건지 블로그를 봐도 뭐가 하나도 안됐다.

이것땜에 주말 내내 계속 끙끙거렸는데 오늘 드디어 강사님과 합심해 해결했다!!!!! 

 

나처럼 블로그 이곳저곳을 뒤지고, 따라해봐도 뭐가 안되고, 모르겠는 생초보를 위해 자료도 공유하고 나도 정리해둘겸 글을 쓴다.

 

일단, 오라클 설치는 다른 블로그가 정말 친절하고 똑똑하게 잘 알려주니 다른 블로그를 참고할 것.

나도 실행하다 가끔 무한로딩 걸리고 안켜지고 그런다.. 그럴 땐 다시

 

[MacOS] M1 맥북 도커로 ORACLE DB 실행하기

Intro M1 맥북을 처음 구입 한 이후로 약 1년 반동안, 오라클 데이터베이스를 띄우기 위해 참 많은 노력을 했었습니다. 원래부터 Oracle이 MacOS를 정식 지원을 하지는 않았지만, 그나마 이전의 맥북에

shanepark.tistory.com

이 분의 블로그에 들어가 보곤 한다.

댓글에도 나와 비슷한 문제를 겪는 분이 많아 도움이 꽤 된다!

 

 

새로운 계정을 만들기 위해서는

 

[ORACLE] 2탄. 맥북 M1 docker를 활용한 HR세팅

#oracle #M1 #docker 배경 오라클DB는 M1의 경우 도커위에서 실행하기 때문에 hr 계정을 찾으면 찾을 ...

blog.naver.com

이분의 블로그를 참고했다. 

 

잘 따라한 건 아니고.. 저장된 루트가 달라서 (그리고 모르겠음 사실) 터미널에 나오는데로 한건데ㅠ 왜 이 분이 알려주신 것과 다른지..

암튼 오라클이 저장된 루트를 따라 어찌저찌 스키마 샘플파일들을 오라클에 저장하는 것까지는 성공했지만 그 뒤로 파일이 영원히 열리지 않았다.. 루트의 문제인것 같은데 이틀동안 해결을 못했었다.

 

저거 말고도 여러 방법의 명령어를 썼지만.. 안됐고 내가 결국 oe 계정을 만들었던 방법은

순수 노가다였다. 

 

일단 오라클 디벨로퍼를 열고 시스템 계정에 들어간다.

 

create user oe identified by oe account unlock;
grant connect,resource to oe;

그 후 하나씩 실행시켜주면 oe 계정이 생성된다. 

'grant connect,resource to oe;' 는 권한을 부여해주는 구문이다. 

 

그리고 실행문에 내가 포함해두지 않은 

'alter user oe quota 30M on users;'는 oe 계정에서 테이블을 생성할때 크기를 정하는 구문이다. 

이건 user 권한이 없다는 오류가 뜨면 넣어주고, 아니면 필수로 넣지 않아도 된다!

 

다 됐으면 왼쪽 상단의 접속 아래 있는 초록 + 버튼을 눌러 oe 계정을 만들어준다.

난 이름, 사용자이름, 비번까지 다 oe 로 통일했다.

그리고 맥은 꼭 SID(I)를 xe로 해둬야 한다!!

 

이렇게 하면 oe 계정이 무사히 만들어지는데 

여기에 테이블을 만들고 한 행씩.. 데이터를 집어 넣으면 된다.

진짜 오늘 하루 내가 고생해서 하나하나 다 편집한.... 쿼리구문ㅠㅠ 강사님도 오류 뜨면 함께 봐주시느라 고생하셨다.. 

drop table CUSTOMERS;



CREATE TABLE  CUSTOMERS  
   (CUSTOMER_ID  NUMBER(6,0), 
    CUST_FIRST_NAME  VARCHAR2(20 BYTE), 
    CUST_LAST_NAME  VARCHAR2(20 BYTE) , 
   
    NLS_LANGUAGE  VARCHAR2(3 BYTE), 
    NLS_TERRITORY  VARCHAR2(30 BYTE), 
    CREDIT_LIMIT  NUMBER(9,2), 
    CUST_EMAIL  VARCHAR2(30 BYTE), 
    ACCOUNT_MGR_ID  NUMBER(6,0), 
   
    DATE_OF_BIRTH  DATE, 
    MARITAL_STATUS  VARCHAR2(20 BYTE), 
    GENDER  VARCHAR2(1 BYTE), 
    INCOME_LEVEL  VARCHAR2(20 BYTE)
);

 

일단 이렇게 CUSTOMERS 테이블 만들기

 

Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (242,'Mary','Lemmon','us','AMERICA',2400,'Mary.Lemmon@PUFFIN.COM',145,to_date('62/07/18','RR/MM/DD'),'married','M','K: 250,000 - 299,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (240,'Malcolm','Kanth','us','AMERICA',2400,'Malcolm.Kanth@PIPIT.COM',145,to_date('55/06/19','RR/MM/DD'),'married','F','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (241,'Malcolm','Broderick','us','AMERICA',2400,'Malcolm.Broderick@PLOVER.COM',145,to_date('52/06/28','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (242,'Mary','Lemmon','us','AMERICA',2400,'Mary.Lemmon@PUFFIN.COM',145,to_date('62/07/18','RR/MM/DD'),'married','M','K: 250,000 - 299,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (243,'Mary','Collins','us','AMERICA',2400,'Mary.Collins@PYRRHULOXIA.COM',145,to_date('55/08/18','RR/MM/DD'),'married','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (244,'Matt','Gueney','us','AMERICA',2400,'Matt.Gueney@REDPOLL.COM',145,to_date('52/08/27','RR/MM/DD'),'single','M','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (245,'Max','von Sydow','us','AMERICA',2400,'Max.vonSydow@REDSTART.COM',145,to_date('67/09/07','RR/MM/DD'),'single','M','K: 250,000 - 299,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (246,'Max','Schell','us','AMERICA',2400,'Max.Schell@SANDERLING.COM',145,to_date('84/09/16','RR/MM/DD'),'married','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (247,'Cynda','Whitcraft','us','AMERICA',2400,'Cynda.Whitcraft@SANDPIPER.COM',145,to_date('54/10/16','RR/MM/DD'),'married','M','B: 30,000 - 49,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (248,'Donald','Minnelli','us','AMERICA',2400,'Donald.Minnelli@SCAUP.COM',145,to_date('53/10/26','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (249,'Hannah','Broderick','us','AMERICA',2400,'Hannah.Broderick@SHRIKE.COM',145,to_date('75/11/16','RR/MM/DD'),'married','M','D: 70,000 - 89,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (250,'Dan','Williams','us','AMERICA',2400,'Dan.Williams@SISKIN.COM',145,to_date('84/11/25','RR/MM/DD'),'single','M','A: Below 30,000');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (251,'Raul','Wilder','us','AMERICA',2500,'Raul.Wilder@STILT.COM',145,to_date('45/12/15','RR/MM/DD'),'married','M','E: 90,000 - 109,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (252,'Shah Rukh','Field','us','AMERICA',2500,'ShahRukh.Field@WHIMBREL.COM',145,to_date('57/12/25','RR/MM/DD'),'single','M','I: 170,000 - 189,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (253,'Sally','Bogart','us','AMERICA',2500,'Sally.Bogart@WILLET.COM',145,to_date('85/01/14','RR/MM/DD'),'married','M','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (254,'Bruce','Bates','us','AMERICA',3500,'Bruce.Bates@COWBIRD.COM',145,to_date('40/01/25','RR/MM/DD'),'single','M','D: 70,000 - 89,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (255,'Brooke','Shepherd','us','AMERICA',3500,'Brooke.Shepherd@KILLDEER.COM',145,to_date('85/02/13','RR/MM/DD'),'married','M','C: 50,000 - 69,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (256,'Ben','de Niro','us','AMERICA',3500,'Ben.deNiro@KINGLET.COM',145,to_date('80/02/24','RR/MM/DD'),'single','M','I: 170,000 - 189,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (257,'Emmet','Walken','us','AMERICA',3600,'Emmet.Walken@LIMPKIN.COM',145,to_date('75/03/15','RR/MM/DD'),'married','M','B: 30,000 - 49,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (258,'Ellen','Palin','us','AMERICA',3600,'Ellen.Palin@LONGSPUR.COM',145,to_date('77/04/14','RR/MM/DD'),'married','M','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (259,'Denholm','von Sydow','us','AMERICA',3600,'Denholm.vonSydow@MERGANSER.COM',145,to_date('43/04/24','RR/MM/DD'),'single','F','D: 70,000 - 89,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (260,'Ellen','Khan','us','AMERICA',3600,'Ellen.Khan@VERDIN.COM',149,to_date('62/05/14','RR/MM/DD'),'married','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (262,'Fred','Reynolds','us','AMERICA',3600,'Fred.Reynolds@WATERTHRUSH.COM',149,to_date('58/07/13','RR/MM/DD'),'married','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (263,'Fred','Lithgow','us','AMERICA',3600,'Fred.Lithgow@WHIMBREL.COM',149,to_date('79/07/23','RR/MM/DD'),'single','M','D: 70,000 - 89,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (264,'George','Adjani','us','AMERICA',3600,'George.Adjani@WILLET.COM',149,to_date('47/08/12','RR/MM/DD'),'married','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (265,'Irene','Laughton','us','AMERICA',3600,'Irene.Laughton@ANHINGA.COM',149,to_date('73/08/22','RR/MM/DD'),'single','F','J: 190,000 - 249,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (267,'Prem','Walken','us','AMERICA',3700,'Prem.Walken@BRANT.COM',145,to_date('53/09/11','RR/MM/DD'),'married','F','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (268,'Kyle','Schneider','us','AMERICA',3700,'Kyle.Schneider@DUNLIN.COM',145,to_date('52/09/21','RR/MM/DD'),'single','F','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (269,'Kyle','Martin','us','AMERICA',3700,'Kyle.Martin@EIDER.COM',145,to_date('58/10/11','RR/MM/DD'),'married','F','D: 70,000 - 89,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (271,'Shelley','Peckinpah','us','AMERICA',3700,'Shelley.Peckinpah@GODWIT.COM',145,to_date('87/11/20','RR/MM/DD'),'single','F','D: 70,000 - 89,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (272,'Prem','Garcia','us','AMERICA',3700,'Prem.Garcia@JACANA.COM',145,to_date('60/12/10','RR/MM/DD'),'married','M','I: 170,000 - 189,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (273,'Bo','Hitchcock','us','AMERICA',5000,'Bo.Hitchcock@ANHINGA.COM',145,to_date('54/01/09','RR/MM/DD'),'married','M','E: 90,000 - 109,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (274,'Bob','McCarthy','us','AMERICA',5000,'Bob.McCarthy@ANI.COM',149,to_date('46/01/19','RR/MM/DD'),'single','M','A: Below 30,000');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (276,'Dom','Hoskins','us','AMERICA',5000,'Dom.Hoskins@AVOCET.COM',149,to_date('51/03/10','RR/MM/DD'),'married','M','E: 90,000 - 109,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (277,'Don','Siegel','us','AMERICA',5000,'Don.Siegel@BITTERN.COM',149,to_date('50/03/20','RR/MM/DD'),'single','M','B: 30,000 - 49,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (278,'Gvtz','Bradford','us','AMERICA',5000,'Gvtz.Bradford@BULBUL.COM',149,to_date('64/04/08','RR/MM/DD'),'married','M','K: 250,000 - 299,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (280,'Rob','MacLaine','us','AMERICA',5000,'Rob.MacLaine@COOT.COM',149,to_date('49/05/09','RR/MM/DD'),'married','M','B: 30,000 - 49,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (281,'Don','Barkin','us','AMERICA',5000,'Don.Barkin@CORMORANT.COM',149,to_date('56/05/18','RR/MM/DD'),'single','M','I: 170,000 - 189,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (282,'Kurt','Danson','us','AMERICA',5000,'Kurt.Danson@COWBIRD.COM',145,to_date('88/06/07','RR/MM/DD'),'married','M','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (308,'Glenda','Dunaway','zhs','CHINA',1200,'Glenda.Dunaway@DOWITCHER.COM',148,to_date('57/07/08','RR/MM/DD'),'married','M','C: 50,000 - 69,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (309,'Glenda','Bates','zhs','CHINA',1200,'Glenda.Bates@DIPPER.COM',148,to_date('55/07/18','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (323,'Goetz','Falk','hi','INDIA',5000,'Goetz.Falk@VEERY.COM',148,to_date('80/08/06','RR/MM/DD'),'married','F','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (326,'Hal','Olin','d','GERMANY',2400,'Hal.Olin@FLICKER.COM',147,to_date('59/09/06','RR/MM/DD'),'married','F','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (327,'Hannah','Kanth','d','GERMANY',2400,'Hannah.Kanth@GADWALL.COM',147,to_date('56/09/15','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (328,'Hannah','Field','d','GERMANY',2400,'Hannah.Field@GALLINULE.COM',147,to_date('85/10/06','RR/MM/DD'),'married','F','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (333,'Margret','Powell','i','ITALY',1200,'Margret.Powell@ANI.COM',147,to_date('53/10/16','RR/MM/DD'),'single','M','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (334,'Harry Mean','Taylor','us','AMERICA',1200,'HarryMean.Taylor@REDPOLL.COM',147,to_date('81/11/15','RR/MM/DD'),'single','M','I: 170,000 - 189,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (335,'Margrit','Garner','i','ITALY',500,'Margrit.Garner@STILT.COM',147,to_date('82/12/05','RR/MM/DD'),'married','F','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (337,'Maria','Warden','i','ITALY',500,'Maria.Warden@TANAGER.COM',147,to_date('73/01/03','RR/MM/DD'),'married','F','B: 30,000 - 49,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (339,'Marilou','Landis','i','ITALY',500,'Marilou.Landis@TATTLER.COM',147,to_date('33/01/13','RR/MM/DD'),'single','M','A: Below 30,000');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (361,'Marilou','Chapman','i','ITALY',500,'Marilou.Chapman@TEAL.COM',147,to_date('89/08/11','RR/MM/DD'),'single','F','D: 70,000 - 89,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (363,'Kathy','Lambert','i','ITALY',2400,'Kathy.Lambert@COOT.COM',147,to_date('56/08/31','RR/MM/DD'),'married','M','C: 50,000 - 69,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (360,'Helmut','Capshaw','zhs','CHINA',3600,'Helmut.Capshaw@TROGON.COM',148,to_date('77/08/01','RR/MM/DD'),'married','M','J: 190,000 - 249,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (341,'Keir','George','i','ITALY',700,'Keir.George@VIREO.COM',147,to_date('63/02/03','RR/MM/DD'),'married','F','E: 90,000 - 109,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (342,'Marlon','Laughton','i','ITALY',2400,'Marlon.Laughton@CORMORANT.COM',147,to_date('47/02/13','RR/MM/DD'),'single','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (343,'Keir','Chandar','i','ITALY',700,'Keir.Chandar@WATERTHRUSH.COM',147,to_date('60/03/04','RR/MM/DD'),'married','M','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (344,'Marlon','Godard','ja','JAPAN',2400,'Marlon.Godard@MOORHEN.COM',148,to_date('60/03/14','RR/MM/DD'),'single','M','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (345,'Keir','Weaver','i','ITALY',700,'Keir.Weaver@WHIMBREL.COM',147,to_date('62/04/04','RR/MM/DD'),'married','M','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (346,'Marlon','Clapton','i','ITALY',2400,'Marlon.Clapton@COWBIRD.COM',147,to_date('88/04/13','RR/MM/DD'),'married','M','K: 250,000 - 299,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (347,'Kelly','Quinlan','i','ITALY',3600,'Kelly.Quinlan@PYRRHULOXIA.COM',147,to_date('29/05/03','RR/MM/DD'),'married','F','A: Below 30,000');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (348,'Kelly','Lange','i','ITALY',3600,'Kelly.Lange@SANDPIPER.COM',147,to_date('71/05/14','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (349,'Ken','Glenn','i','ITALY',3600,'Ken.Glenn@SAW-WHET.COM',147,to_date('67/06/03','RR/MM/DD'),'married','M','K: 250,000 - 299,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (350,'Ken','Chopra','i','ITALY',3600,'Ken.Chopra@SCAUP.COM',147,to_date('51/06/13','RR/MM/DD'),'single','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (351,'Ken','Wenders','i','ITALY',3600,'Ken.Wenders@REDPOLL.COM',147,to_date('62/07/03','RR/MM/DD'),'married','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (380,'Meryl','Holden','hi','INDIA',3700,'Meryl.Holden@DIPPER.COM',148,to_date('61/10/10','RR/MM/DD'),'single','F','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (447,'Richard','Coppola','i','ITALY',500,'Richard.Coppola@SISKIN.COM',147,to_date('81/10/30','RR/MM/DD'),'married','F','C: 50,000 - 69,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (449,'Rick','Romero','i','ITALY',1500,'Rick.Romero@LONGSPUR.COM',147,to_date('51/12/10','RR/MM/DD'),'single','F','B: 30,000 - 49,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (450,'Rick','Lyon','i','ITALY',1500,'Rick.Lyon@MERGANSER.COM',147,to_date('41/01/01','RR/MM/DD'),'married','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (451,'Ridley','Hackman','i','ITALY',700,'Ridley.Hackman@ANHINGA.COM',147,to_date('50/01/11','RR/MM/DD'),'single','F','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (453,'Ridley','Young','hi','INDIA',700,'Ridley.Young@CHUKAR.COM',148,to_date('45/02/10','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (454,'Rob','Russell','hi','INDIA',5000,'Rob.Russell@VERDIN.COM',148,to_date('77/03/02','RR/MM/DD'),'married','M','E: 90,000 - 109,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (458,'Robert','de Niro','hi','INDIA',3700,'Robert.deNiro@DOWITCHER.COM',148,to_date('86/03/12','RR/MM/DD'),'single','F','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (466,'Rodolfo','Hershey','hi','INDIA',5000,'Rodolfo.Hershey@VIREO.COM',148,to_date('47/04/11','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (467,'Rodolfo','Dench','hi','INDIA',5000,'Rodolfo.Dench@SCOTER.COM',148,to_date('71/05/01','RR/MM/DD'),'married','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (470,'Roger','Mastroianni','hi','INDIA',3700,'Roger.Mastroianni@CREEPER.COM',148,to_date('67/05/31','RR/MM/DD'),'married','M','L: 300,000 and above');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (473,'Rolf','Ashby','hi','INDIA',5000,'Rolf.Ashby@WATERTHRUSH.COM',148,to_date('49/06/10','RR/MM/DD'),'single','M','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (474,'Romy','Sharif','hi','INDIA',5000,'Romy.Sharif@SNIPE.COM',148,to_date('76/06/29','RR/MM/DD'),'married','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (476,'Rosanne','Hopkins','hi','INDIA',300,'Rosanne.Hopkins@ANI.COM',148,to_date('79/07/30','RR/MM/DD'),'married','M','D: 70,000 - 89,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (477,'Rosanne','Douglas','hi','INDIA',300,'Rosanne.Douglas@ANHINGA.COM',148,to_date('70/08/09','RR/MM/DD'),'single','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (478,'Rosanne','Baldwin','hi','INDIA',300,'Rosanne.Baldwin@AUKLET.COM',148,to_date('67/08/29','RR/MM/DD'),'married','F','A: Below 30,000');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (480,'Roxanne','Michalkow','hi','INDIA',1200,'Roxanne.Michalkow@EIDER.COM',148,to_date('73/09/18','RR/MM/DD'),'single','M','L: 300,000 and above');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (481,'Roy','Hulce','hi','INDIA',5000,'Roy.Hulce@SISKIN.COM',148,to_date('67/09/28','RR/MM/DD'),'married','F','E: 90,000 - 109,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (482,'Roy','Dunaway','hi','INDIA',5000,'Roy.Dunaway@WHIMBREL.COM',148,to_date('55/10/28','RR/MM/DD'),'married','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (487,'Rufus','Dvrrie','hi','INDIA',1900,'Rufus.Dvrrie@PLOVER.COM',148,to_date('60/11/26','RR/MM/DD'),'married','M','J: 190,000 - 249,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (488,'Rufus','Belushi','hi','INDIA',1900,'Rufus.Belushi@PUFFIN.COM',148,to_date('52/12/26','RR/MM/DD'),'married','M','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (492,'Sally','Edwards','hi','INDIA',2500,'Sally.Edwards@TURNSTONE.COM',148,to_date('80/01/06','RR/MM/DD'),'married','F','K: 250,000 - 299,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (101,'Constantin','Welles','us','AMERICA',100,'Constantin.Welles@ANHINGA.COM',145,to_date('72/02/20','RR/MM/DD'),'married','M','B: 30,000 - 49,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (102,'Harrison','Pacino','us','AMERICA',100,'Harrison.Pacino@ANI.COM',145,to_date('53/03/02','RR/MM/DD'),'single','M','I: 170,000 - 189,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (103,'Manisha','Taylor','us','AMERICA',100,'Manisha.Taylor@AUKLET.COM',145,to_date('83/03/22','RR/MM/DD'),'married','F','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (104,'Harrison','Sutherland','us','AMERICA',100,'Harrison.Sutherland@GODWIT.COM',145,to_date('72/03/31','RR/MM/DD'),'single','F','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (105,'Matthias','MacGraw','us','AMERICA',100,'Matthias.MacGraw@GOLDENEYE.COM',145,to_date('69/04/21','RR/MM/DD'),'married','F','C: 50,000 - 69,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (106,'Matthias','Hannah','us','AMERICA',100,'Matthias.Hannah@GREBE.COM',145,to_date('60/04/30','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (107,'Matthias','Cruise','us','AMERICA',100,'Matthias.Cruise@GROSBEAK.COM',145,to_date('69/05/21','RR/MM/DD'),'married','F','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (108,'Meenakshi','Mason','us','AMERICA',100,'Meenakshi.Mason@JACANA.COM',145,to_date('57/06/20','RR/MM/DD'),'married','M','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (109,'Christian','Cage','us','AMERICA',100,'Christian.Cage@KINGLET.COM',145,to_date('38/06/30','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (110,'Charlie','Sutherland','us','AMERICA',200,'Charlie.Sutherland@LIMPKIN.COM',145,to_date('51/07/20','RR/MM/DD'),'married','M','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (111,'Charlie','Pacino','us','AMERICA',200,'Charlie.Pacino@LONGSPUR.COM',145,to_date('48/07/29','RR/MM/DD'),'single','M','G: 130,000 - 149,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (112,'Guillaume','Jackson','us','AMERICA',200,'Guillaume.Jackson@MOORHEN.COM',145,to_date('54/08/19','RR/MM/DD'),'married','M','I: 170,000 - 189,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (113,'Daniel','Costner','us','AMERICA',200,'Daniel.Costner@PARULA.COM',145,to_date('77/08/29','RR/MM/DD'),'single','M','I: 170,000 - 189,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (114,'Dianne','Derek','us','AMERICA',200,'Dianne.Derek@SAW-WHET.COM',145,to_date('48/09/17','RR/MM/DD'),'married','M','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (115,'Geraldine','Schneider','us','AMERICA',200,'Geraldine.Schneider@SCAUP.COM',145,to_date('31/10/18','RR/MM/DD'),'married','M','B: 30,000 - 49,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (116,'Geraldine','Martin','us','AMERICA',200,'Geraldine.Martin@SCOTER.COM',145,to_date('27/10/28','RR/MM/DD'),'single','M','A: Below 30,000');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (117,'Guillaume','Edwards','us','AMERICA',200,'Guillaume.Edwards@SHRIKE.COM',145,to_date('52/11/16','RR/MM/DD'),'married','M','E: 90,000 - 109,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (118,'Maurice','Mahoney','us','AMERICA',200,'Maurice.Mahoney@SNIPE.COM',145,to_date('66/11/27','RR/MM/DD'),'single','M','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (120,'Diane','Higgins','us','AMERICA',200,'Diane.Higgins@TANAGER.COM',145,to_date('84/12/26','RR/MM/DD'),'single','M','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (121,'Dianne','Sen','us','AMERICA',200,'Dianne.Sen@TATTLER.COM',145,to_date('53/01/15','RR/MM/DD'),'married','M','H: 150,000 - 169,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (122,'Maurice','Daltrey','us','AMERICA',200,'Maurice.Daltrey@TEAL.COM',145,to_date('43/02/15','RR/MM/DD'),'married','M','A: Below 30,000');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (123,'Elizabeth','Brown','us','AMERICA',200,'Elizabeth.Brown@THRASHER.COM',145,to_date('49/02/24','RR/MM/DD'),'single','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (125,'Dianne','Andrews','us','AMERICA',200,'Dianne.Andrews@TURNSTONE.COM',145,to_date('59/03/27','RR/MM/DD'),'single','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (126,'Charles','Field','us','AMERICA',300,'Charles.Field@BECARD.COM',145,to_date('46/04/16','RR/MM/DD'),'married','F','F: 110,000 - 129,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (127,'Charles','Broderick','us','AMERICA',300,'Charles.Broderick@BITTERN.COM',145,to_date('43/04/26','RR/MM/DD'),'single','F','B: 30,000 - 49,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (129,'Louis','Jackson','us','AMERICA',400,'Louis.Jackson@CARACARA.COM',145,to_date('39/05/26','RR/MM/DD'),'single','M','D: 70,000 - 89,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (130,'Louis','Edwards','us','AMERICA',400,'Louis.Edwards@CHACHALACA.COM',145,to_date('44/06/14','RR/MM/DD'),'married','M','C: 50,000 - 69,999');
Insert into CUSTOMERS (CUSTOMER_ID,CUST_FIRST_NAME,CUST_LAST_NAME,NLS_LANGUAGE,NLS_TERRITORY,CREDIT_LIMIT,CUST_EMAIL,ACCOUNT_MGR_ID,DATE_OF_BIRTH,MARITAL_STATUS,GENDER,INCOME_LEVEL) values (131,'Doris','Dutt','us','AMERICA',400,'Doris.Dutt@CHUKAR.COM',145,to_date('76/07/14','RR/MM/DD'),'married','F','C: 50,000 - 69,999');

사실 여기에 한줄이 빠졌다.. 강사님이 그렇게 주심;

근데 실습하다보면 버전차이인지 조금씩 다르기도 해서 크게 상관없을 듯 해 그냥 킵고잉

 

저걸 다 복붙해서 드레그 한 후 실행하면 '1행이 추가되었습니다' 가 한 200번 나오면서 테이블 안에 값이 들어간다!!

 

나 정말 오늘 대단했다.. 

ㅋㅋ 암튼 다 만들었다면 

새로고침하면 이렇게 값이 보인다. 데이터를 눌러도 값이 잘 나오는 것을 확인할 수 있다!

 

하나하나 수정했던 이유는 무슨이유인지 값을 못 읽는 부분이 있어서였다.

다행히 강사님이 그건 수업 때 어차피 사용하지 않을거니 그냥 지우라고 하셨다. 

이번 수업을 들으면 전에 뭐 때문에 값을 못 읽었던 건지, 더 잘 알 수 있게되지 않을까.. ㅜ

 

어쨌든 해내서 다행이다. 강사님께 감사의 의미로 커피를 사드렸고,, ㅋㅋ 은혜에 보답하고자 강사님 편하게 수업하시라고 맥을 쓰는 수업 동료들에게 내가 손수 편집한 쿼리문을 퍼트렸다~~~ 

 

다들 잘 실행되는 것을 보면 뿌듯하다. 역시 배워서는 남주는 것!

휴,, 이젠 나도 공부를 하려 가야겠다! 

 

'( '-' ).。oO ( SQL ) > Oracle' 카테고리의 다른 글

맥북 오라클 실행 전 터미널 설정  (0) 2024.06.13

나와 같이 매일 남는 동료들 총 3명에서 스터디를 시작했다!

목업에 대해 배운다

금요일이나 월요일에 디자인 구현으로 시험을 볼 예정

조원과 함께 ppt로 파워목업을 사용해 홈페이지 구성 틀을 만들어볼 것이다.

 

스토리보드 짜는 법 참고 사이트 :

 

스토리보드 디스크립션 쓰는 방법

디스크립션(Discription)은 작업자에게 '다음 행동'을 암시하는 화면을 정의하는 문장이다. 즉, 기획한 웹사이트의 와이어프레임을 잡은 후에 그 화면에서 발생하는 액션을 이해관계자에게 설명하

lattediary.tistory.com

 

 

 

 

 

 

계속해서 제이쿼리의 이벤트에 대해 배운다.

 

change 이벤트

change 이벤트 : 요소의 변화 감지
$(this) = "#rel_site"
this 는 이벤트가 발생한 요소
<script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            
            $(function () {
                // change 이벤트 : 요소의 변화 감지
                // $(this) = "#rel_site"
                // this 는 이벤트가 발생한 요소
                $("#rel_site").on("change",function(){
                    $(".txt").text($(this).val())
                });     
            });
            
        </script>
    </head>
    <body>
        <select id="rel_site">
            <option value="">사이트 선택</option>
            <option value="www.google.com">구글</option>
            <option value="www.naver.com">네이버</option>
            <option value="www.daum.net">다음</option>
      </select>
      <p class="txt"></p>
    </body>

 

 

링크 속성 제거와 클릭이벤트 적용하기

<script>
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>

            $(function () {
                // 링크 속성 제거와 클릭이벤트 적용하기 
                // <a> <form> 태그
                // <a href="#"> <form action="#"> 링크 속성 제거
                // 스크립트에서는 아래 두가지 방법으로 링크 속성 제거, 클릭이벤트 적용
                // 1. return false
                // 2. e.preventDefault() -> 핸들러에 매개변수를 넣어야 한다.

                $(".btn1").on("click",function(e){
                    e.preventDefault();
                    $(".txt1").css({"background-color":"tomato"})
                });

                $(".btn2").on("click",function(){
                    $(".txt2").css({"background-color":"tomato"})
                    return false; // 링크 속성 차단
                });

                $(".btn3").on("click",function(){
                    $(".txt3").css({"background-color":"tomato"})
                });

            });
        </script>
    </head>
    <body>
        <p>
            <a href="http://www.easyspub.co.kr/" class="btn1">버튼1</a>
        </p>
        <p class="txt1">내용1</p>
        <p>
            <a href="http://www.easyspub.co.kr/" class="btn2">버튼2</a>
        </p>
        <p class="txt2">내용2</p>
        <p>
            <!-- 링크 속성이 없다 -->
            <button class="btn3">버튼3</button> 
        </p>
        <p class="txt3">내용3</p>
    </body>

참고 )

 

[자바스크립트 입문] 이벤트

이벤트 이벤트란 사용자가 웹 브라우저에서 취하는 모든 동작을 말한다. 웹 페이지에 접속하여 마우스 및 ...

blog.naver.com

 

 

📚 제이쿼리 이벤트 종류 & 설정 총정리

jQuery 이벤트 문법 웹 페이지는 사용자와 수많은 상호작용을 하게 된다. 사용자는 마우스를 움직이거나, 요소를 클릭하거나, 텍스트 박스에 글을 쓰는 등 수많은 종류의 동작(action)을 수행한다.

inpa.tistory.com

 

 

이벤트를 복습하는 프로젝트

 

글자크기를 조절하는 프로그램

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            // 글자크기를 조절하는 프로그램

            $(function () {
                let baseFontSize = 14; // 기준값 : 원래 폰트 사이즈

                // 외부에 만들어진 함수를 쓸 때는 zoomInOut 처럼 함수의 이름만 사용, () 붙이지 않음 요소 선택을 그룹으로 한 경우, 자식들이
                // 요소를 적용받는다.
                $(".zoomBtnZone button").on("click", zoomInOut);

                // 별로도 정의한 핸들러
                function zoomInOut() {
                    if ($(this).hasClass("zoomOutBtn")) {
                        if (baseFontSize <= 8) { // 최소 크기
                            return false;
                        }
                        baseFontSize--;
                    } else if ($(this).hasClass("zoomInBtn")) {
                        if (baseFontSize >= 20) { // 최대 크기
                            return false;
                        }
                        baseFontSize++;
                    } else {
                        baseFontSize = 14;
                    }

                    $(".fontSize").text(baseFontSize + "px");
                    $("body").css({
                        fontSize: baseFontSize + "px"
                    })
                }

            });
        </script>
        <style>
            body {
                font-size: 14px;
                font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
            }
        </style>
    </head>
    <body>
        <p class="zoomBtnZone">
            <button class="zoomOutBtn">-</button>
            <button class="originBtn">100%</button>
            <button class="zoomInBtn">+</button>
        </p>
        <select>
            <option>맑은고딕</option>
            <option>헬베티카</option>
            <option>산들고딕</option>
        </select>
        <p class="fontSize">14px</p>
        <div id="wrap">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas feugiat
            consectetur nibh, ut luctus urna placerat non. Phasellus consectetur nunc nec mi
            feugiat egestas. Pellentesque et consectetur mauris, sed rutrum est. Etiam odio
            nunc, ornare quis urna sed, fermentum fermentum augue. Nam imperdiet vestibulum
            ipsum quis feugiat. Nunc non pellentesque diam, nec tempor nibh. Ut consequat
            sem sit amet ullamcorper sodales.
            
        </div>
    </body>
</html>

 

 

글자모양도 바꾸기 추가

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            // 글자크기를 조절하는 프로그램

            $(function () {
                let baseFontSize = 14; // 기준값 : 원래 폰트 사이즈
                let body = $("body");

                // 외부에 만들어진 함수를 쓸 때는 zoomInOut 처럼 함수의 이름만 사용, () 붙이지 않음 요소 선택을 그룹으로 한 경우, 자식들이
                // 요소를 적용받는다.
                $(".zoomBtnZone button").on("click", zoomInOut);

                // 별로도 정의한 핸들러
                function zoomInOut() {
                    if ($(this).hasClass("zoomOutBtn")) {
                        if (baseFontSize <= 8) { // 최소 크기
                            return false;
                        }
                        baseFontSize--;
                    } else if ($(this).hasClass("zoomInBtn")) {
                        if (baseFontSize >= 20) { // 최대 크기
                            return false;
                        }
                        baseFontSize++;
                    } else {
                        baseFontSize = 14;
                    }

                    $(".fontSize").text(baseFontSize + "px");
                    $("body").css({
                        fontSize: baseFontSize + "px"
                    })
                }

                // 글자 모양 변경
                $("#fontStyle").on("change", function () {
                    body.css("font-family", $(this).val());
                });

            });
        </script>
        <style>
            body {
                font-size: 14px;
                font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
                /* font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
                font-family:'Times New Roman', Times, serif  */
            }
        </style>
    </head>
    <body>
        <p class="zoomBtnZone">
            <button class="zoomOutBtn">-</button>
            <button class="originBtn">100%</button>
            <button class="zoomInBtn">+</button>
        </p>
        <select class="changeStyleZone" id="fontStyle">
            <option
                class="Lucida Sans"
                value="'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif">맑은고딕</option>
            <option
                class="Segoe UI"
                value="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif">헬베티카</option>
            <option class="Times New Roman" value="'Times New Roman', Times, serif">산들고딕</option>
        </select>
        <p class="fontSize">14px</p>
        <div id="wrap">
            내 생일 파티에 너만 못 온 그날 혜진이가 엄청 혼났던 그날 지원이가 여친이랑 헤어진 그날 걔는 언제나 네가 없이 그날
            너무 멋있는 옷을 입고 그날 Heard him say
        </div>
    </body>
</html>

 

 

글자 색 바꾸기 추가

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            // 글자크기를 조절하는 프로그램

            $(function () {
                let baseFontSize = 14; // 기준값 : 원래 폰트 사이즈
                let body = $("body");

                // 외부에 만들어진 함수를 쓸 때는 zoomInOut 처럼 함수의 이름만 사용, () 붙이지 않음 요소 선택을 그룹으로 한 경우, 자식들이
                // 요소를 적용받는다.
                $(".zoomBtnZone button").on("click", zoomInOut);
                $(".colors").on("change", colorChange);

                // 별로도 정의한 핸들러
                function zoomInOut() {
                    if ($(this).hasClass("zoomOutBtn")) {
                        if (baseFontSize <= 8) { // 최소 크기
                            return false;
                        }
                        baseFontSize--;
                    } else if ($(this).hasClass("zoomInBtn")) {
                        if (baseFontSize >= 20) { // 최대 크기
                            return false;
                        }
                        baseFontSize++;
                    } else {
                        baseFontSize = 14;
                    }

                    $(".fontSize").text(baseFontSize + "px");
                    $("body").css({
                        fontSize: baseFontSize + "px"
                    })
                }

                // 글자 모양 변경
                $("#fontStyle").on("change", function () {
                    body.css("font-family", $(this).val());
                });

                // 글자 색 변경
                function colorChange(){
                    $("body #wrap").css({color:$(this).val()});
                }

            });
        </script>
        <style>
            body {
                font-size: 14px;
                font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
                /* font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
                font-family:'Times New Roman', Times, serif  */
            }
        </style>
    </head>
    <body>
        <p class="zoomBtnZone">
            <button class="zoomOutBtn">-</button>
            <button class="originBtn">100%</button>
            <button class="zoomInBtn">+</button>
        </p>
        <select class="changeStyleZone" id="fontStyle">
            <option
                class="Lucida Sans"
                value="'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif">맑은고딕</option>
            <option
                class="Segoe UI"
                value="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif">헬베티카</option>
            <option class="Times New Roman" value="'Times New Roman', Times, serif">산들고딕</option>
        </select>
        <p class="fontSize">14px</p>
        <br>
        <br>
        <label>색상선택 : </label>
        <input type="color" class="colors">
        <br> <br>
        <div id="wrap">
            낭비하지 마, 네 시간은 은행 <br>
            서둘러서 정리해, 걔는 real bad 받아주면 안돼, no, you better trust me 답답해서, 그래 <br>
            저번에도 봤지만 너 없을 때 <br>
            걘 여기저기에 눈빛을 뿌리네 아주 눈부시게, honestly, <br>
            우리 사이에 He's been totally lying, yeah <br>
            내 생일 파티에 너만 못 온 그날 <br>
            혜진이가 엄청 혼났던 그날 지원이가 여친이랑 헤어진 그날 걔는 언제나 네가 없이 그날 <br>
            너무 멋있는 옷을 입고 그날 Heard him say
        </div>
    </body>
</html>

 

 

이제 애니메이션에 대해 배운다

정말 재미있는 개념이라 계속 만들어보며 공부하면 좋을 것! 게임 만들어보기!

 

 

제이쿼리의 애니메이션

애니메이션 효과

hide(), fadeOut(), slideOut() => 숨김
show(), fadeIn(), slideDown() => 노출
toggle(), fadeToggle(), slideToggle(), fadeTo(0 ~ 1)

효과시간
1. slow, normal, fast
2. 1000단위(밀리세컨즈)
$(요소선택).효과메서드(효과시간, 가속도, [콜백함수]) 
                                 콜백함수는 선택적으로 사용

 

버튼을 이용한 애니메이션 예제 코드

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            
            $(function () {
                $(".btn2").hide();

                $(".btn1").on("click", () => {
                    $(".box").slideUp(1000,"linear", function(){
                        $(".btn1").hide();
                        $(".btn2").show();
                    });
                });

                $(".btn2").on("click",() => {
                    $(".box").fadeIn(4000,"swing",function(){
                        $(".btn2").hide();
                        $(".btn1").show();
                    });
                });

                $(".btn3").on("click",() => {
                    $(".box").slideToggle(2000,"linear");  // 반대 상태로 만들어준다
                });

                $(".btn4").on("click",() => {   
                    $(".box").fadeTo("fast", 0.3);  // 투명도 조절
                });

                $(".btn5").on("click",() => {
                    $(".box").fadeTo("fast", 1);
                });
            });
            
        </script>
        <style>
            .content{
               width:400px;
               background-color: #eee;
            }
         </style>
    </head>
    <body>
        <p>
            <button class="btn1">slideUp</button>
            <button class="btn2">fadeIn</button>
         </p>
         <p>
            <button class="btn3">toggleSide</button>
         </p> 
         <p>
            <button class="btn4">fadeTo(0.3)</button>
            <button class="btn5">fadeTo(1)</button>
         </p>   
         <div class="box">
            <div class="content">
                  Lorem ipsum dolor sit amet, 
                  consectetur adipiscing elit. 
                  Maecenas feugiat consectetur nibh, 
                  ut luctus urna placerat non. 
                  Phasellus consectetur nunc nec mi feugiat egestas. 
                  Pellentesque et consectetur mauris, sed rutrum est. 
                  Etiam odio nunc, ornare quis urna sed, fermentum fermentum augue. 
                  Nam imperdiet vestibulum ipsum quis feugiat. 
                  Nunc non pellentesque diam, nec tempor nibh. 
                  Ut consequat sem sit amet ullamcorper sodales.
            </div>
         </div>
    </body>
</html>

 

 

animate()을 쓰는 방법

animate() : 움직임 구현 
animate({스타일 속성}, 적용시간, 가속도, 콜백함수)
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>

            $(function () {
                // animate() : 움직임 구현 
                // animate({스타일 속성}, 적용시간, 가속도, 콜백함수)

                $(".btn1").on("click", function(){
                    $(".txt1").animate({
                        marginLeft:"500px",
                        fontSize:"30px"
                    },2000,function(){
                        alert("모션 완료");
                    });
                });
                
                $(".btn2").on("click", function(){
                    $(".txt2").animate({
                        // 한번에 50px 씩 더해나가라
                        marginLeft:"+=50px"  
                    },1000);
                });

            });
        </script>
        <style>
            .txt1{background-color: aqua;}
            .txt2{background-color: pink;}
         </style>
    </head>
    <body>
        <p>
            <button class="btn1">버튼1</button>
        </p>
        <span class="txt1">"500px" 이동</span>
        <p>
            <button class="btn2">버튼2</button>
        </p>
        <span class="txt2">"50px"씩 이동</span>
    </body>
</html>

 

 

stop(),  delay()

stop() : 현재 실행중인 애니메이트를 종료 후 다음 애니메이션 실행
stop(true, true) : 현재 실행중인 애니메이션 종료, 에니메이션의 끝 지점으로 이동한다
대기열을 삭제해 더 이상 애니메이션이 일어나지 않는다.
delay() : 일정시간 큐에서 대기 후 실행
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>

            $(function () {

                $(".txt1").animate({
                    marginLeft:"300px"
                },1000);

                $(".txt2").delay(3000).animate({
                    marginLeft:"300px"
                },1000);

                $(".btn1").on("click",moveElment);

                function moveElment(){
                    $(".txt3").animate({
                        marginLeft:"+=50px"
                    },800);

                    $(".txt4").animate({
                        marginLeft:"+=50px"
                    },800);

                    $(".txt4").stop();

                    $(".txt5").animate({
                        marginLeft:"+=50px"
                    },800);

                    $(".txt5").stop(true, true);
                }
            });

        </script>
        <style>
            p{width: 110px;text-align: center;}
            .txt1{background-color: aqua;}
            .txt2{background-color: pink;}
            .txt3{background-color: orange;}
            .txt4{background-color: green;}
            .txt5{background-color: gold;}
         </style>

    </head>
    <body>
        <p class="txt1">효과1</p>
        <p class="txt2">효과2<br> delay(3000)</p>
     
        <p><button class="btn1">50px 전진</button></p>
        <p class="txt3">효과3</p>
        <p class="txt4">효과4<br>stop( )</p>
        <p class="txt5">효과5<br>stop(true, true)</p>
    </body>
</html>

 

 

queue() 와 dequeue()

queue() : 함수를 사용해서 에니메이트 효과 구현, 자기 뒤에 있는 에니메이트 효과는 다 날려버림(나머지 대기열 삭제)
예) 게임에서 대빵을 죽였을 때 나머지 공격 효과 X
clearQueue() : 진행 중인 것을 제외하고 대기열 정보 모두 삭제
dequeue() : queue() 이후에 대기열의 정보를 정상적으로 실행시킨다
 <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>

            $(function () {
                // queue() : 함수를 사용해서 에니메이트 효과 구현, 자기 뒤에 있는 에니메이트 효과는 다 날려버림(나머지 대기열 삭제)
                // 예) 게임에서 대빵을 죽였을 때 나머지 공격 효과 X
                // clearQueue() : 진행 중인 것을 제외하고 대기열 정보 모두 삭제
                // dequeue() : queue() 이후에 대기열의 정보를 정상적으로 실행시킨다

                $(".txt1").animate({marginLeft:"200px"},1000)
                .animate({marginTop:"200px"},1000)
                .queue(function(){         // queue() 뒤에 대기열 삭제
                    $(this).css({background:"pink"});
                })
                .animate({marginLeft:"0px"},1000)
                .animate({marginTop:"0px"},1000);
                
            });

        </script>
        <style>
            *{margin:0;}
            .txt1{width:50px;text-align: 
            center;background-color: aqua;}
         </style>

    </head>
    <body>
        <p class="txt1">내용1</p>
    </body>

 

 

목업, 피그마 등등 디자인 잠깐 하고 자바2로 넘어간다.

자바 다시 복습하고 오기

 

지금까지 배운 이벤트를 사용해서 프로젝트 만들기

 

구현화면)

 

왼쪽 사이드바 없어졌다, 생겼다

 

 

응용해서 오른쪽으로 없어졌다, 생겼다

 

 

코드)

css

/*
 * Base
 */
html {
    font-family: "Helvetica Neue", "Arial", "Hiragino Kaku Gothic ProN", "Meiryo", sans-serif;
    font-size: 16px;
    line-height: 1.5;
}

body {
    background-color: #656565;
}

img {
    vertical-align: middle;
}

button {
    outline: none;
}

::-moz-selection {
    background: #b3d4fc;
    text-shadow: none;
}

::selection {
    background: #b3d4fc;
    text-shadow: none;
}

.page-header {
    background-color: #fff;
}

.page-header h1 {
    width: 976px;
    height: 80px;
    margin: 0 auto;
    padding-left: 10px;
    font-size: 20px;
    font-weight: normal;
    line-height: 80px;
    letter-spacing: 0.1em;
}

.page-main {
    position: relative;

}

.page-main > aside {
    background-color: rgba(0,0,0,0.8);
    width: 350px;
    height: 100%;
    top: 0;
    right: 0;
    /* right: -350px; */
    position: fixed;
}

.page-main > aside ul {
    margin: 0;
    padding: 0;
    top: 50px;
    right: 114px;
    position: absolute;
}

.page-main > aside li {
    margin: 0 0 20px;
    list-style: none;
}

.page-main > aside button {
    background-color: rgba(0,0,0,0.8);
    /* 인라인은  width, height 를 못쓴다. */
    display: block;   
    position: absolute;
    top: 150px;
    right: 350px;
    width: 52px;
    height: 132px;
    margin: 0;
    padding: 0;
    border: none;
}

.page-footer {
    background-color: #656565;
}

.page-footer small {
    display: block;
    color: #fff;
    font-size: 11px;
    text-align: right;
    width: 976px;
    margin: 0 auto;
    height: 120px;
    line-height: 120px;
    letter-spacing: 0.15em;
}

.page-footer a {
    color: #fff;
    text-decoration: none;
}

 

js

$(function(){
    let duration = 300;

    // $객체정보
    let $aside = $(".page-main > aside");
    let $asidButton = $aside.find("button").on("click",function(){
        $aside.toggleClass('open')
        if ($aside.hasClass('open')){
            // 화면에 보이게
            // 'easeOutBack' 가속 붙기
            $aside.stop(true).animate({right:"-350px"},duration,'easeOutBack');
            $asidButton.find('img').attr('src', 'img/btn_open.png');
        }else{
            // 화면에 숨기게
            $aside.stop(true).animate({right:"-70px"},duration,'easeOutBack');
            $asidButton.find('img').attr('src', 'img/btn_close.png');
        }
    });
});

 

html

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Chapter 04-04 - jQuery 최고의 교과서</title>
<link rel="stylesheet" href="./css/normalize.css">
<link rel="stylesheet" href="./css/main.css">

<script src="./js/vendor/jquery-1.10.2.min.js"></script>
<script src="./js/vendor/jquery-ui-1.10.3.custom.min.js"></script>
<script src="./js/main.js"></script>
</head>
<body>

<header class="page-header" role="banner">
    <h1>Creative jQuery Sample</h1>
</header>

<div class="page-main" role="main">
    <aside>
        <ul>
            <li><a href="#"><img src="img/01_aside.png"></a></li>
            <li><a href="#"><img src="img/02_aside.png"></a></li>
            <li><a href="#"><img src="img/03_aside.png"></a></li>
        </ul>
        <button><img src="img/btn_open.png"></button>
    </aside>
</div>

<footer class="page-footer" role="contentinfo">
    <small class="copyright">COPYRIGHT &copy; <a href="http://www.shiftbrain.co.jp" target="_blank">SHIFTBRAIN Inc.</a></small>
</footer>

</body>
</html>

제이쿼리에 대해 배우고 있는데 메서드들이 많아서 수업시간에 다루는 메서드들은 암기할 필요가 있습니다.

오늘은 웹페이지를 작성할 때 제이쿼리에서 많이 사용되는 것을 배움

→ 객체 조작

 

제이쿼리의 객체조작

 

html(), html(요소명)

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
                // 객체조작
                // 속성조작
                // html(),html(요소명) : 특정 태그를 포함한 텍스트까지를 범위로 하는 함수(메서드),(하위요소)
                // html() : 해당 대상을 읽어올 때 ()만 쓴다
                // html(요소명) : 해당 범위 안에 요소를 추가

                let result1 = $("#sec_1").html();
                console.log(result1)
                $("#sec_1 p").html("<a href=\"#\">Text1</a>");

                // text(), text("텍스트") 태그의 텍스트 부분만 범위로 사용한다

                let result2 = $("#sec_2").text();
                console.log(result2)
                $("#sec_2 h2").text("text()");
            });
        </script>
    </head>

    <body>
        <h1>
            <strong>객체 조작 및 생성</strong>
        </h1>
        <section id="sec_1">
            <h2>
                <em>html()</em>
            </h2>
            <p>내용1</p>
        </section>
        <section id="sec_2">
            <h2>
                <em>텍스트()</em>
            </h2>
            <p>내용2</p>
        </section>
    </body>
</html>

 

 

태그의 속성조작

attr("속성명"), attr("속성명", "새로운 값")
removeAttr("속성명") - 삭제
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
                // 태그의 속성 조작
                // attr("속성명"), attr("속성명", "새로운 값")
                // removeAttr("속성명") - 삭제

                let srcVal = $("#sec_1 img").attr("src");
                console.log(srcVal);

                // 여러개의 속성을 줄 때는 , 로 구분한다
                $("#sec_1 img").attr({
                    "width":200, 
                    "src":srcVal.replace("1.jpg","2.jpg"),
                    "alt":"바위"
                }).removeAttr("border");
            });
        </script>
    </head>

    <body>

        <h1>
            <strong>객체 조작 및 생성</strong>
        </h1>
        <section id="sec_1">
            <h2>이미지 속성</h2>
            <p><img src="images/math_img_1.jpg" alt="바위" border="2"></p>
        </section>

    </body>
</html>

 

 

class 속성을 조작하는 메서드

addClass("class값").removeClass("class값")
toggleClass("class값"),hasClass("class값")
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
                // class 속성을 조작하는 메서드 
                // addClass("class값").removeClass("class값")
                // toggleClass("class값"),hasClass("class값")

                $("#p1").addClass("aqua");
                $("#p2").removeClass("red");
                $("#p3").toggleClass("green"); // 없으면 들어가고 있으면 뺀다. -> 상태가 뭐냐에 따라 반대로 작업
                $("#p4").toggleClass("green"); // toggle 자체가 '없으면 들어가고 있으면 뺀다' 같은 개념
                $("#p6").text($("#p5").hasClass("yellow")); // 값이 있는지 없는지 판단. 있으면 true, 없으면 false
                // hasClass() 기존 값이 사라지고 새로운 값이 들어감

            });
        </script>
        <style>
            .aqua {
                background-color: #0ff;
            }
            .red {
                background-color: #f00;
            }
            .green {
                background-color: #0f0;
            }
            .yellow {
                background-color: #ff0;
            }
        </style>
    </head>

    <body>

        <p id="p1">내용1</p>
        <p id="p2" class="red">내용2</p>
        <p id="p3">내용3</p>
        <p id="p4" class="green">내용4</p>
        <p id="p5" class="yellow">내용5</p>
        <p id="p6"></p>

    </body>
</html>

 

 

폼태그의 값 조작

일반태그일 떄 text()
폼 태그일 땐 val() 
                
폼태그의 값 조작
val(), val("새로운 값")
prop() -> true, false : 선택상자, 체크박스, 라디오버튼 이런 것들을 활용하고 싶을 때
prop() -> 선택되었을 때 true, 선택되지 않았을 때 false , 선택 유무를 알려준다. 상태 체크!
prop("defalutValue")
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
                // 일반태그일 떄 text()
                // 폼 태그일 땐 val() 
                
                // 폼태그의 값 조작
                // val(), val("새로운 값")
                // prop() : 선택상자, 체크박스, 라디오버튼 이런 것들을 활용하고 싶을 때
                // prop("defalutValue")

                let result1 = $("#user_name").val();  // 값을 읽어온다
                console.log(result1);

                let result2 = $("#user_id").val("javascript"); // () 안의 새로운 값으로 바뀐다
                console.log($("#user_id").val());

                let result3 = $("#user_id").prop("defaultValue");
                console.log(result3);
            });
        </script>
    </head>

    <body>
        <h1>객체 조작 및 생성</h1>
        <form action="#" id="form_1">
            <p>
                <label for="user_name">이름</label>
                <input type="text" name="user_name" id="user_name" value="용대리">
            </p>
            <p>
                <label for="user_id">아이디</label>
                <input type="text" name="user_id" id="user_id" value="hello">
            </p>
        </form>
    </body>
</html>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {

                let result1 = $("#chk1").prop("checked"); 
                console.log(result1);  // false

                let result2 = $("#chk2").prop("checked"); 
                console.log(result2);  // true

                // 동적처리를 통해 스크립트에서 체크 표시를 변경 가능
                let result3 = $("#chk3").prop("checked",true); 

                // 그룹으로 묶여있을 때
                // 부모그룸을 지정하면 하위 그룹을 반환해준다
                // selected 되어진 인덱스 번호를 반환해준다.
                let result4 = $("#se_1").prop("selectedIndex");
                console.log(result4);  // 2

            });
        </script>
    </head>

    <body>

                <h1><strong>객체 조작 및 생성</strong></h1>
            <form action="#" id="form_1">
            <p>
                <input type="checkbox" name="chk1" id="chk1">
                <label for="chk1">chk1</label>
                <input type="checkbox" name="chk2" id="chk2" checked>
                <label for="chk2">chk2</label>
                <input type="checkbox" name="chk3" id="chk3">
                <label for="chk3">chk3</label>
            </p>
            <p>
                <select name="se_1" id="se_1">
                    <option value="opt1">option1</option>
                    <option value="opt2">option2</option>
                    <option value="opt3" selected>option3</option>
                </select>
            </p>
        </form>
    </body>
</html>

 

 

수치조작 메서드

 

객체조작 메서드 ( 수치 조작 메서드 )

객체 조작 메서드 ( 수치 조작 메서드 )

velog.io

width(), height() ....
width("새로운 값"), height("새로운 값") : 크기 변경
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
                // 수치조작 메서드
                // width(), height() ....
                // width("새로운 값"), height("새로운 값") : 크기 변경

                let w1 = $("#p1").height();
                console.log(w1); // 50

                let w2 = $("#p1").innerHeight();
                console.log(w2); // 90

                let w3 = $("#p1").outerHeight();
                console.log(w3); //100

                $("#p2").outerWidth(100).outerHeight(100);

                
            });
        </script>
        <style>
            *{padding: 0;}
            #p1, #p2{
               width: 100px;
               height: 50px;
               padding:20px;
               border: 5px solid #000;
               background-color: #ff0;
            }
         </style>
    </head>

    <body>
        <h1>수치 조작 메서드</h1>
         <p id="p1">내용1</p>
         <p id="p2">내용2</p>
    </body>
</html>

 

 

요소의 위치 조작

position().[left, top, right, bottom] : 상대 위치값 
offset().[left, top]: 절대 위치값 -> 브라우저로 부터 떨어진 거리
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
               // 요소의 위치 조작
               // position().[left, top, right, bottom] : 상대 위치값 
               // offset().[left, top]: 절대 위치값 -> 브라우저로 부터 떨어진 거리

               let $txt1 = $(".txt_1 span"), 
                   $txt2 = $(".txt_2 span"), 
                   $box = $(".box");

                let off_t = $box.offset().top;  // 100 브라우저가 기준
                let pos_t = $box.position().top;  // 50 부모, 현재 자신이 기준

                $txt1.text(off_t);
                $txt2.text(pos_t);

            });
        </script>
        <style>
            *{margin:0;padding:0;}
            #box_wrap{
               width:300px;
               height:200px;
               margin:50px auto 0;
               position: relative; 
               background-color:#ccc;
            }
            .box{
               width:50px;height:50px;
               position:absolute;
               left:100px;top:50px;
               background-color:#f00;
            }
         </style>


    </head>

    <body>
        <div id="box_wrap">
            <p class="box">박스</p>
         </div>
         <p class="txt_1">절대 top위칫값: <span></span></p>
         <p class="txt_2">상대 top위칫값: <span></span></p>
    </body>
</html>

 

 

브라우저의 스크롤 수치 조작

scrollTop(), scrollLeft() : 수치를 읽어올 때
scrollTop(새로운 값), scrollLeft(새로운 값)
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
                // 브라우져의 스크롤 수치 조작
                // scrollTop(), scrollLeft() : 수치를 읽어올 때
                // scrollTop(새로운 값), scrollLeft(새로운 값)

                // let topNum = $("h1").offset().top; 
                // console.log(topNum);  // 2000px
                // $(window).scrollTop(topNum);

                // let sct =  $(window).scrollTop();
                // console.log(sct);  // 2000px 만큼 위치 이동

                $(window).scroll(function(){
                    let sct = $(window).scrollTop();
                    console.log(sct);

                    if(sct <= 2000){
                        $("body").css({"background-color":"tomato"});
                    }else if(sct > 2000 && sct <= 3000){
                        $("body").css({"background-color":"orange"});
                    }else{
                        $("body").css({"background-color":"yellow"});
                    }
                });
            });
        </script>
        <style>
            *{
                margin:0;
                padding:0;
            }

            body{
                line-height:1;
            }

            #wrap{
                  height:5000px;
                  padding-top:2000px;
            }
         </style>
    </head>

    <body>
        <div id="wrap">
            <h1>위치 메서드</h1>
      </div>
    </body>
</html>

 

 

객체 요소 편집

생성

before(), after(), 
append(), appendTo(), 
prepend(), prependTo(), 
insertBefore(), insertAfter()
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
              // 객체 요소 편집
              // 생성, ...
              // before(), after(), 
              // append(), appendTo(), 
              // prepend(), prependTo(), 
              // insertBefore(), insertAfter()
              // remove()

            // 동위
            //   $("#wrap p:eq(2)").after("<p>After</p>"); // 기준을 앞에 정의
            //   $("<p>insertAfter</p>").insertAfter("#wrap p:eq(1)"); // 기준을 뒤에 정의

            //   $("#wrap p:eq(1)").before("<p>Before</p>"); 
            //   $("<p>insertBefore</p>").insertBefore("#wrap p:eq(0)");

            // 하위
            $("<li>appendTo</li>").appendTo("#listZone");  // 가장 마지막에 위치한다
            $("#listZone").prepend("<li>prepend</li>");  // 가장 앞쪽에 위치한다.


            });
        </script>

    </head>

    <body>

        <ul id="listZone">
            <li>리스트</li>
         </ul>

        <!-- <div id="wrap">
            <p>내용1</p>
            <p>내용2</p>
            <p>내용3</p>
         </div> -->
    </body>
</html>

 

복제, 삭제 ...
clone() : 복제
remove() : 삭제(해당요소를 포함한 모두 삭제)
empty() : 삭제(해당요소의 하위 요소만 삭제, 해당요소 자체는 남겨둔다.)
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
              // 객체 요소 편집
              // 복제, 삭제 ...
              // clone() : 복제
              // remove() : 삭제(해당요소를 포함한 모두 삭제)
              // empty() : 삭제(해당요소의 하위 요소만 삭제, 해당요소 자체는 남겨둔다.)

              // children() 자식요소들을 가지고 옴
              let copyObj = $(".box1").children().clone();
              $(".box2").remove();

              $(".box3").empty();
              $(".box3").append(copyObj);

            });
        </script>

    </head>

    <body>
        <div class="box1">
            <p>내용1</p>
            <p>내용2</p>
         </div>
         <div class="box2">
            <p>내용3</p>
            <p>내용4</p>
         </div>
         <div class="box3">
            <p>내용5</p>
            <p>내용6</p>
         </div>
    </body>
</html>

 

 

제이쿼리의 이벤트

참고)

 

[jQuery]이벤트(Event) 종류

⊙ 이벤트(Event) •기본적으로 전역에 작성된 프로그램은 프로그램이 실행됨과 동시에 바로 실행되...

blog.naver.com

 

 

제이쿼리 이벤트를 주는 두 가지 방식

 

mouseover, mouseout, focus, blur

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
                // 제이쿼리 이벤트를 주는 두 가지 방식
                // 단독 이벤트, 그룹 이벤트

                // 단독 이벤트
                // $("선택자").이벤트(익명함수 방식의 핸들러 function(){});

                // 그룹 이벤트 만드는 방식 두 가지.
                // 이벤트 나열할때 스페이스로 구분
                // $("선택자").on("이벤트종류1 이벤트종류2 이벤트종류n" , 익명함수 방식의 핸들러 function(){});
                // $("선택자").on({"이벤트종류1 이벤트종류2 이벤트종류n":function(){
                // }
                // });

                $(".btn1").click(function(){
                    $(".btn1").parent().next().css({"color":"red"});
                });

                // mouseover 마우스를 해당요소에 올려놓았을 때 
                // mouseout 마우스를 해당 요소에서 다른 곳에 두었을 때
                // focus 노드가 포커스를 획득했을 때
                // blur 포커스가 해당 요소를 벗어날때 -> tap으로 실행해볼 수 있음
                $(".btn2").on({
                    "mouseover focus":function(){
                        $(".btn2").parent().next().css({"color":"red"});
                    },
                    "mouseout blur":function(){
                        $(".btn2").parent().next().css({"color":"blue"});
                    }
                });

                // 이벤트 제거(이벤트를 동결시킬 때 사용)
                $(".btn1").off("click"); 
                
            });
        </script>
    </head>
    <body>
        <p>
            <button class="btn1">버튼1</button>
            </p>
            <p>내용1</p>
            <p>
               <button class="btn2">버튼2</button>
            </p>
            <p>내용2</p>
    </body>
</html>

 

 

hover

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
                // mouseover 마우스를 해당요소에 올려놓았을 때 
                // mouseout 마우스를 해당 요소에서 다른 곳에 두었을 때

                // mouseover와 mouseout 사용
                $(".btn1").on({
                    "mouseover":function(){
                        $(".txt1").css({"background-color":"yellow"});
                    },
                    "mouseout":function(){
                        $(".txt1").css({"background":"none"});
                    }
                });

                // mouseover와 mouseout를 같이 처리해주는 hover
                // hover => mouseover + mouseout
                // hover는 focus와 같은 그륩이벤트 적용이 안된다.
                $(".btn2").hover(
                    function(){  // mouseover
                        $(".txt2").css({"background-color":"skyblue"});
                    },
                    function(){  // mouseout
                        $(".txt2").css({"background":"none"});
                    }
                );

            });
        </script>
    </head>
    <body>
        <p><button class="btn1">Mouse Over/Mouse Out</button></p>
        <p class="txt1">내용1</p>
        <p><button class="btn2">Hover</button></p>
        <p class="txt2">내용2</p>
    </body>
</html>

 

 

mousemove 이벤트

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            // mousemove
            // mouse가 움직이는 좌표값을 받아서 이벤트를 발생
            // function(e) -> e 는 event 객체, X축과 Y축의 값을 받아올 수 있다
            // 키보드와 마우스는 운영체제가 관리
            // 윈도우를 띄웠을 때 보이는 흰색 배경을 document라고 한다.
            $(function () {
                $(document).on("mousemove",function(e){
                    $(".posX").text(e.pageX);
                    $(".posY").text(e.pageY);
                });
            });
            
        </script>
    </head>
    <body>
        <h1>mousemove</h1>
        <p>X : <span class="posX">0</span>px</p>
        <p>Y : <span class="posY">0</span>px</p>
    </body>
</html>

시험에서 나온 문제들

기록용으로 문제도 남겼어야 했는데 답만 적었다.. 뭔지 알아두는 게 좋을 듯하다.

 

GUI(그래픽 유저 인터페이스, Graphical User Interface

-> 그래픽 유저 인터페이스(GUI, Graphical User Interface)는 사용자가 컴퓨터와 상호작용할 수 있는 방법 중 하나로, 아이콘, 메뉴, 창 등 그래픽 요소를 통해 정보를 표현하고 사용자 입력을 받아들입니다. 사용자가 마우스, 키보드 등의 장치를 통해 그래픽 요소를 조작함으로써 소프트웨어를 제어할 수 있습니다. 이는 명령어를 직접 입력해야 하는 텍스트 기반 인터페이스에 비해 직관적이고 사용하기 쉽다는 장점이 있습니다.

와이어프레임(Wireframe)

-> 와이어프레임(Wireframe)은 웹사이트나 애플리케이션의 구조를 시각적으로 표현하는 방법입니다. 이는 화면 레이아웃, 페이지 간의 연결관계, 사용자 인터페이스 요소의 배치와 우선순위 등을 보여주는 역할을 합니다. 와이어프레임을 통해 개발자와 디자이너는 제품의 흐름, 기능, 사용성 등을 이해하고, 사용자 경험을 최적화하는 데 도움이 됩니다.

W3C(World Wide Web Consortium)

-> W3C(World Wide Web Consortium)는 월드 와이드 웹을 위한 표준을 개발하고 관리하는 국제 커뮤니티입니다. 이 조직은 웹의 장기적인 성장을 보장하기 위해 웹 표준을 개발하며, HTML, CSS 등 많은 중요한 웹 기술 표준을 제공하고 있습니다.

웹 표준(Web Standards)

-> 웹 표준(Web Standards)는 웹에서 사용되는 기술이나 규칙을 표준화하여, 웹이 운영체제, 브라우저, 장치 등에 상관없이 일관되게 동작할 수 있도록 하는 규약입니다. 이는 웹 접근성을 보장하고, 웹의 호환성을 높이는데 큰 역할을 합니다. 웹 표준을 준수하면, 웹사이트의 유지보수가 용이하고, 검색 엔진 최적화(SEO)에도 유리합니다.

 

시험에선 이걸 만들었는데 저 흰색 부분 구현이 안됐고.. 로그인과 자켓 등 뭐 선택하는 태그들에도 데코레이션 논을 안줬다. 생각이 안났다.. 찾아보면 되는건데 왜 그렇게 정신이 없었는지ㅠ

 

 

제이쿼리 속성선택자

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script>
    <script>
        $(function(){

            // 속성 선택자
            $("#wrap a[target]").css("color","red");
            $("#wrap a[href^=https]").css("color","blue");
            //앞에 https가 들어간 녀석이 있으면 blue로 바꿔라 , 가장 최근에 사용된 css가 적용이 된다
            $("#wrap a[href$=net]").css("color","green");
            //net로 끝나는 값이 있으면 green으로 바꿔라
        });

    </script>
</head>
<body>
    <div id="wrap">
        <p><a href="https://www.naver.com" target="_blank">naver</a></p>
        <p><a href="http://www.daum.net">daum</a></p>
    </div>

</body>
</html>

 

 

제이쿼리 속성선택자2_1

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function(){
                // 속성의 상태 탐색, css를 두 개 이상 주는 법
                $('#wrap p:hidden').css({"display":"block","color":"red"});

                // val() -> 폼의 value 속성을 가져오는 메서드
                // :selected 처럼 뒤에 뭐가 붙어있는지 볼 때 띄어쓰기를 하면 안된다!
                let z1 = $("#zone1 :selected").val();
                console.log(z1);

                let z2 = $("#zone2 :checked").val();
                console.log(z2);
            });

        </script>
    </head>
    <body>
        <div id="wrap">
            <p>내용1</p>
            <p style="display:none">내용2</p>
            <p>내용3</p>
        </div>
        <form action="#">
            <p id="zone1">
                <select name="course" id="course">
                    <option value="opt1">옵션1</option>
                    <option value="opt2" selected="selected">옵션2</option>
                    <option value="opt3">옵션3</option>
                </select>
            </p>
            <p id="zone2">
                <input type="checkbox" name="hobby1" value="독서">
                독서
                <input type="checkbox" name="hobby2" value="자전거">
                자전거
                <input type="checkbox" name="hobby3" value="등산" checked="checked">
                등산
            </p>
            <p id="zone3">
                <input type="radio" name="gender" value="male">
                남성
                <input type="radio" name="gender" value="female" checked="checked">
                여성
            </p>
        </form>

    </body>
</html>

 

제이쿼리 속성선택자2_2

<script>
        $(function(){
                // 속성선택자
                $("#member_f :text").css("background-color","red");
                $("#member_f :password").css("background-color","blue");
            });
    </script>
</head>
<body>
    <form action="#" method="get" id="member_f">
        <p>
           <label for="user_id">아이디</label>
           <input type="text" name="user_id" id="user_id">
        </p>
        <p>
           <label for="user_pw">비밀번호</label>
           <input type="password" name="user_pw" id="user_pw">
        </p>
     </form>

 

 

콘텐츠 탐색 선택자

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script
    src="https://code.jquery.com/jquery-3.7.1.js"
    integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
    crossorigin="anonymous"></script>
    <script>

        $(function() {
            //contains() : 해당 요소에 해당 문자가 포함되어 있는지 포함되어 있으면 : 해라~
            $("#inner_1 p:contains(내용1)").css("color", "red");

            //contains() : 해당 요소의 하위요소(1 depth = 1 밑에 = 바로 밑에) 텍스트와 태그노드를 선택
            $("#outer_wrap").contents().css({"border":"1px dashed #00f"});

            //has() : 해당요소가 지정한 태그를 포함하면 선택
            $("#inner_1 p:has(strong)").css("color", "blue");

            //not() : 지장한 요소를 제외한 나머지 선택
            $("#inner_2 p").not(":first").css({"background-color":"yellow"});

            //end() : 현재 선택된 요소의 이전 요소를 선택하는 메서드
            //$("#inner_2 p").eq(2).end().css("color","green");

            // $("tr")....eq(0)  : 첫번째가 선택
            // $("tr")....eq(-1)  : 마지막에서 첫번째 선택
            // $("tr")....eq(-2)  : 마지막에서 두번째 선택
            $("#inner_2 p").eq(1).css("color", "yellow").end();
        });

    </script>
</head>
<body>
    <div id="outer_wrap">
        <h1>콘텐츠 탐색 선택자</h1>
        <section id="inner_1">
           <h1>contains( ), contents( ), has( )</h1>
           <p><span>내용1</span></p>
           <p><strong>내용2</strong></p>
           <p><span>내용3</span></p>
        </section>
        <section id="inner_2">
           <h1>not( ), end( )</h1>
           <p>내용4</p>
           <p>내용5</p>
           <p>내용6</p>
        </section>
     </div> 
</body>
</html>

 

 

end() 메서드

 

다음은 체이닝과 관련된 end() 메소드입니다. 
체이닝이란 

$('h1').css('background','orange').filter(':even').css('color', 'red');
 
이렇게 한줄에 여러 메소드를 이어서 쓰는 걸 말해요. 

그리고 필터 메소드의 단점은 사용할수록 범위를 계속 좁게만 선택할 수 있게 되는거에요. 

그래서 end()메소드가 필요합니다. end()메소드는 문서객체 선택을 한단계 뒤로 돌려요.
 

알통몬의 인생 : 네이버 블로그

알통몬입니다. 이웃신청 다 받아요^^ 티스토리 블로그도 해요. https://altongmon.tistory.com 문의 E-mail: rain483@naver.com kakaoTalk: psk0918

blog.naver.com

 

 

find(), filter() 메서드

<script>
        $(function(){

            //find() : 하위 요소 중에 필터링 할 요소
            $("#inner_1").find(".txt1").css("color", "red");

            //filter() : 선택한 요소 중에 필터링할 요소
            $("#inner_1 p").filter(".txt2").css("color", "blue");

            $("#inner_2 p").filter(function(idx,obj){    
                console.log(idx);
                // 0이 짝수로 판단되어진다
                return idx % 2 === 0;
            }).css({"background-color" :"yellow"});

        });
    </script>
</head>
<body>
    <div id="outer_wrap">
        <h1>콘텐츠 탐색 선택자</h1>
        <section id="inner_1">
           <h2>find( ), filter( )</h2>
           <p class="txt1">내용1</p>
           <p class="txt2">내용2</p>
        </section>
        
        <section id="inner_2">
           <h2>filter(function)</h2>
           <p>index 0</p>
           <p>index 1</p>
           <p>index 2</p>
           <p>index 3</p>
        </section>
     </div>
</body>

 

 

 

작성 : 2024. 5. 3. 8:47

 

나는 빡대가리가 맞았다.

그리고 퐁규도 어쩌면 빡대가리일지도..

자동차 색깔 바꾸는 프로그래밍 초창기 내가 망친 ver.

계산 됨. 색 안됨

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>자동차 견적내기</title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }

            body {
                font: 12px/1.5 dotum,"돋움", gulim, "굴림", sans-serif;
            }

            li {
                list-style: none;
            }

            table {
                border-collapse: collapse;
                border-spacing: 0;
            }

            h1 {
                text-align: center;
            }

            #carZone {
                width: 600px;
                margin: 0 auto;
            }

            #estimate {
                width: 100%;
            }

            #estimate th,
            td {
                border: 1px solid #ccc;
                height: 30px;
            }

            #estimate th {
                background-color: #333;
                color: #fff;
            }

            #carZone td {
                text-align: center;
            }

            tfoot {
                font-size: 15px;
                font-weight: bold;
            }

            #total {
                border: none 0;
                background: none;
                font-size: 1.5em;
                font-weight: bold;
                text-align: center;
            }
        </style>

        <script>
            // 자동차 가격 바꾸기
            function car() {
                //let basic_car = parseInt(document.getElementById("total").defaultValue);
                let basic_car = Number(document.getElementById("total").defaultValue);
                let color_price = 0;

                let colorChkCnt = document
                    .querySelectorAll('.opt4:checked')
                    .length;
                let colorChk = document.getElementById("opt4")
                if (colorChkCnt > 0) {
                    color_price += Number(colorChk.value);
                }

                for (let i = 1; i <= 3; i++) {
                    let chkObj = document.getElementById("opt" + i)
                    if (chkObj.checked) {
                        basic_car += Number(chkObj.value)
                    }
                }

                basic_car += color_price;
                document.getElementById("total").value = basic_car;
            }

            // 자동차 색 바꾸기
            // function changeColor(colorIndex) {
            // // 모든 이미지를 숨김
            // let images = document.querySelectorAll('#showColor img');
            // images.forEach(image => {
            // image.style.display = 'none';
            // });

            // // 선택한 색상의 이미지만 보이도록 변경
            // images[colorIndex].style.display = 'block'; 
            //}

            function showColor() {
                document.getElementsByName("").sre = "./"
            }


        </script>

    </head>
    <body>

        <h1>자동차 견적</h1>

        <div id="carZone">
            <p id="showColor">
                <img src="images/car4.jpeg" alt="자동차"/>
                <img src="images/car.jpeg" alt="자동차"/>
                <img src="images/car3.jpeg" alt="자동차"/>
                <img src="images/car2.jpeg" alt="자동차"/>
            </p>

            <table id="estimate">
                <colgroup>
                    <col width="380px"/>
                    <col width="160px"/>
                    <col width="160px"/>
                </colgroup>
                <thead>
                    <tr>
                        <th scope="row">옵 션</th>
                        <th scope="row">추가 가격</th>
                        <th scope="row">선택</th>
                    </tr>
                </thead>
                <tfoot>
                    <tr>
                        <th scope="col">(기본)차량가격</th>
                        <td colspan="2">
                            <input
                                type="text"
                                name="total"
                                id="total"
                                value="13450000"
                                readonly="readonly"/>
                        </td>
                    </tr>
                </tfoot>
                <tbody>
                    <tr>
                        <td>
                            <label for="opt1">인조가죽시트</label>
                        </td>
                        <td>250000</td>
                        <td>
                            <!-- 옵션 체크박스에 클릭할 때 마다 car()에 저장된 일련의 실행문을 실행합니다. -->
                            <input type="checkbox" name="opt1" id="opt1" value="250000" onclick="car();"/></td>
                    </tr>
                    <tr>
                        <td>
                            <label for="opt2">내비게이션</label>
                        </td>
                        <td>250000</td>
                        <td><input type="checkbox" name="opt2" id="opt2" value="250000" onclick="car();"/></td>
                    </tr>
                    <tr>
                        <td>
                            <label for="opt3">선루프</label>
                        </td>
                        <td>440000</td>
                        <td><input type="checkbox" name="opt3" id="opt3" value="440000" onclick="car();"/></td>
                    </tr>
                    <tr>
                        <td>
                            <label for="opt4">색상선택</label>
                        </td>
                        <td>100000</td>
                        <td>
                            <input
                                type="radio"
                                name="opt4"
                                id="opt4"
                                value="100000"
                                class="opt4"
                                onclick="car();"/>red
                            <input
                                type="radio"
                                name="opt4"
                                id="opt4"
                                value="100000"
                                class="opt4"
                                onclick="car();"/>green
                            <input
                                type="radio"
                                name="opt4"
                                id="opt4"
                                value="100000"
                                class="opt4"
                                onclick="car();"/>blue
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </body>
</html>

 

 

두번째, 뭔가 더 해본 ver.

계산 됨, 색 안됨

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>자동차 견적내기</title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }

            body {
                font: 12px/1.5 dotum,"돋움", gulim, "굴림", sans-serif;
            }

            li {
                list-style: none;
            }

            table {
                border-collapse: collapse;
                border-spacing: 0;
            }

            h1 {
                text-align: center;
            }

            #carZone {
                width: 600px;
                margin: 0 auto;
            }

            #estimate {
                width: 100%;
            }

            #estimate th,
            td {
                border: 1px solid #ccc;
                height: 30px;
            }

            #estimate th {
                background-color: #333;
                color: #fff;
            }

            #carZone td {
                text-align: center;
            }

            tfoot {
                font-size: 15px;
                font-weight: bold;
            }

            #total {
                border: none 0;
                background: none;
                font-size: 1.5em;
                font-weight: bold;
                text-align: center;
            }
        </style>

        <script>
            // 자동차 가격 바꾸기
            function car() {
                //let basic_car = parseInt(document.getElementById("total").defaultValue);
                let basic_car = Number(document.getElementById("total").defaultValue);

                for (let i = 1; i <= 6; i++) {
                    let chkObj = document.getElementById("opt" + i)
                    if (chkObj.checked) {
                        basic_car += Number(chkObj.value)
                    }
                }
                document.getElementById("total").value = basic_car;
            }

            자동차 색상 변경 함수
            function carColor(obj) {

                let carImage = document.getElementById("selected-image");
                switch(obj.id) {
                case "opt4":
                    carImage.src = "images/car.jpeg";
                    break;
                case "opt5":
                    carImage.src = "images/car3.jpeg";
                    break;
                case "opt6":
                    carImage.src = "images/car2.jpeg";
                    break;
            }

            }


        </script>

    </head>
    <body>

        <h1>자동차 견적</h1>

        <div id="carZone">
            <p id="showColor">
                <img src="images/car4.jpeg" alt="기본 자동차" id="selected-image"/>
            </p>

            <table id="estimate">
                <colgroup>
                    <col width="380px"/>
                    <col width="160px"/>
                    <col width="160px"/>
                </colgroup>
                <thead>
                    <tr>
                        <th scope="row">옵 션</th>
                        <th scope="row">추가 가격</th>
                        <th scope="row">선택</th>
                    </tr>
                </thead>
                <tfoot>
                    <tr>
                        <th scope="col">(기본)차량가격</th>
                        <td colspan="2">
                            <input
                                type="text"
                                name="total"
                                id="total"
                                value="13450000"
                                readonly="readonly"/>
                        </td>
                    </tr>
                </tfoot>
                <tbody>
                    <tr>
                        <td>
                            <label for="opt1">인조가죽시트</label>
                        </td>
                        <td>250000</td>
                        <td>
                            <!-- 옵션 체크박스에 클릭할 때 마다 car()에 저장된 일련의 실행문을 실행합니다. -->
                            <input type="checkbox" name="opt1" id="opt1" value="250000" onclick="car();"/></td>
                    </tr>
                    <tr>
                        <td>
                            <label for="opt2">내비게이션</label>
                        </td>
                        <td>250000</td>
                        <td><input type="checkbox" name="opt2" id="opt2" value="250000" onclick="car();"/></td>
                    </tr>
                    <tr>
                        <td>
                            <label for="opt3">선루프</label>
                        </td>
                        <td>440000</td>
                        <td><input type="checkbox" name="opt3" id="opt3" value="440000" onclick="car();"/></td>
                    </tr>
                    <tr>
                        <td>
                            <label for="opt4">색상선택</label>
                        </td>
                        <td>100000</td>
                        <td>
                            <input
                                type="radio"
                                name="colorRed"
                                id="opt4"
                                value="100000"
                                class="opt4"
                                onclick="car();"/>red
                            <input
                                type="radio"
                                name="colorGreen"
                                id="opt5"
                                value="100000"
                                class="opt4"
                                onclick="car();"/>green
                            <input
                                type="radio"
                                name="colorBlue"
                                id="opt6"
                                value="100000"
                                class="opt4"
                                onclick="car();"/>blue
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </body>
</html>

 

 

우리 조의 구세주 ver.

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
            body {
                font: 12px/1.5 dotum,"돋움", gulim, "굴림", sans-serif;
            }
            li {
                list-style: none;
            }
            table {
                border-collapse: collapse;
                border-spacing: 0;
            }

            h1 {
                text-align: center;
            }
            #carZone {
                width: 600px;
                margin: 0 auto;
            }
            #estimate {
                width: 100%;
            }
            #estimate th,
            td {
                border: 1px solid #ccc;
                height: 30px;
            }
            #estimate th {
                background-color: #333;
                color: #fff;
            }
            #carZone td {
                text-align: center;
            }
            tfoot {
                font-size: 15px;
                font-weight: bold;
            }
            #total {
                border: none 0;
                background: none;
                font-size: 1.5em;
                font-weight: bold;
                text-align: center;
            }
        </style>
        <script>
            function car() {
                //let basic_car =parseInt(document.getElementById("total").defaultValue);
                let basic_car = Number(document.getElementById("total").defaultValue); //parseInt(정수전체) = Number(숫자전체)

                for (let i = 1; i <= 6; i++) {
                    let chkObj = document.getElementById("opt" + i)
                    if (chkObj.checked) {
                        basic_car += Number(chkObj.value)
                    }
                }
                document.getElementById("total").value = basic_car;

                let carcolor1 = document.getElementById("opt4")
                let carcolor2 = document.getElementById("opt5")
                let carcolor3 = document.getElementById("opt6")

                if (carcolor1.checked) {
                    document
                        .getElementById("carcolor")
                        .src = "./images/car1.jpeg"
                }
                if (carcolor2.checked) {
                    document
                        .getElementById("carcolor")
                        .src = "./images/car3.jpeg"
                }
                if (carcolor3.checked) {
                    document
                        .getElementById("carcolor")
                        .src = "./images/car2.jpeg"
                }
            }
        </script>

    </head>
    <body>
        <h1>자동차 견적</h1>
        <div id="carZone">
            <p ><img id="carcolor" src="./images/car4.jpeg" alt="자동차"/></p>
            <table id="estimate">
                <colgroup>
                    <col width="380px"/>
                    <col width="160px"/>
                    <col width="*"/>
                </colgroup>
                <thead>
                    <tr>
                        <th scope="row">옵 션</th>
                        <th scope="row">추가 가격</th>
                        <th scope="row">선택</th>
                    </tr>
                </thead>
                <tfoot>
                    <tr>
                        <th scope="col">(기본)차량가격</th>
                        <td colspan="2">
                            <input
                                type="text"
                                name="total"
                                id="total"
                                value="13450000"
                                readonly="readonly"/>
                        </td>
                    </tr>
                </tfoot>
                <tbody>
                    <tr>
                        <td>
                            <label for="opt1">인조가죽시트</label>
                        </td>
                        <td>250000</td>
                        <td>
                            <!-- 옵션 체크박스에 클릭할 때 마다 car()에 저장된 일련의 실행문을 실행합니다. -->
                            <input type="checkbox" name="opt1" id="opt1" value="250000" onclick="car();"/></td>
                    </tr>
                    <tr>
                        <td>
                            <label for="opt2">내비게이션</label>
                        </td>
                        <td>250000</td>
                        <td><input type="checkbox" name="opt2" id="opt2" value="250000" onclick="car();"/></td>
                    </tr>
                    <tr>
                        <td>
                            <label for="opt3">선루프</label>
                        </td>
                        <td>440000</td>
                        <td><input type="checkbox" name="opt3" id="opt3" value="440000" onclick="car();"/></td>
                    </tr>
                    <tr>
                        <td>
                            <label for="opt4">색상선택</label>
                        </td>
                        <td>100000</td>
                        <td>
                            <input type="radio" name="opt4" id="opt4" value="100000" onclick="car();"/>red
                            <input type="radio" name="opt4" id="opt5" value="100000" onclick="car();"/>green
                            <input type="radio" name="opt4" id="opt6" value="100000" onclick="car();"/>blue
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </body>
</html>

함수를 두 개 못쓰면 그냥 안쓰면 되는 것이었다..ㅋ

함수를 하나 더 만든 바람에 함수 두개를 어떻게 써야하지? 이러고 해맴..

 


 

 

이제 오늘의 내용 :

   <script>

        // EM6 버전으로 넘어오며 생긴 것들
        // var, let, const 버전이 업되면서 구분되기 위해 사용
        // 될 수 있으면 let을 사용
        // 함수의 호이스팅
        // 화살표 함수 

         this.num = 10;
        
         let obj = {
             num : 5,
             add1 : function(a) {
                 console.log(this.num + a , this);  // 8
             },

             add2 : (a) => {
                 // 화살표 함수는 this가 없다 
                 console.log(this.num + a , this);  // NaN
             }
         }

         obj.add1(3);
         obj.add2(3);


---------------------------------------------------------------------------


        // 기본값에 대해
         function addNum(a = 0, b = 0){
             console.log(a + b); // 기본값 넣기 전 : NaN , 넣은 후 : 5
             console.log(a);  // 기본값 넣기 전 : 5 , 넣은 후 : 5
             console.log(b);  //기본값 넣기 전 : undefined , 넣은 후 : 0
         }

         addNum(5); 
     
         
---------------------------------------------------------------------------


        // EM5 
         function addNum(){ //가변형인자
             // argument 
             for(let i = 0; i < arguments.length; i++){
                 console.log(arguments[i])
             }
         }
         console.log(addNum());
         console.log(addNum(1));
         console.log(addNum(1, 2, 3));  // 배열구조
   
        
---------------------------------------------------------------------------
        

        // EM6 가변인자를 직접 표시해서 사용 , 자바와 똑같음
         function addNum(... number){
             for(let i = 0; i < number.length; i++){
                  console.log(number[i])
              }
         }
         addNum(1, 2, 3);
         
         
---------------------------------------------------------------------------


        // 펼침연산자
          let numbers = [1, 2, 3, 4, 5];
          let max;

          max = Math.max(...numbers);
          console.log(max); // 5

         console.log(numbers);  // [1, 2, 3, 4, 5]
         console.log(...numbers);  // 1, 2, 3, 4, 5

         let numbers = [1, 2, 3, 4, 5];
         let max;

         for(let i = 0; i < numbers.length; i++) {
             if (numbers[i] > numbers[0]) {
                 max = numbers[i];
             }
         }

         console.log(max); // 5
         
         
---------------------------------------------------------------------------


        // 스크립트의 향상된 for문
         let numbers = [1, 2, 3, 4, 5];
         for (let i of numbers) {
             console.log(i);
         }
         
         
---------------------------------------------------------------------------


        // ~ 자판 영어 상태일 때는 `가 입력된다.
        // 표현식 (백티)
         let name = 'hong';
         console.log("나의 이름은" + name + "입니다.");

         let num1 = 1;
         let num2 = 2;
         let text = `${num1}과 ${num2}의 합계는 ${num1} + ${num2} 입니다`
         console.log(text);
         
         
---------------------------------------------------------------------------


        // 배열의 비구조화
         let numbers = [3, 4];
         let a, b; 

         a = numbers[0];
         b = numbers[1];

         let numbers = [3,4,5];
         let [a, b] = numbers; 
         let [c, ,d] = numbers;

         console.log(a);  // 3
         console.log(b);  // 4
         console.log(`${c} ${d}`);  // 3 5

         let numbers = [1, 2, 3];
         let [a, ...b] = numbers;
         console.log(a); // 1
         console.log(b);  // (2) [2, 3]


    </script>

 

 

제이 쿼리

$(function(){

});

위와 같이 쓰는 것이

window.onload = function(){  // 현재 페이지가 모두 로딩되기 전까지 대기

}

와 같다.

 

제이쿼리를 CDN 방식으로 불러와 작성

    <script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script>
    <script>


        // 제이쿼리 문법으로 위 식을 표현하기 onload 이벤트와 똑같음.
        // $("document").ready(function(){

        // });

        // 생략된 버전
        $(function(){
             $("선택자").기능();  // 제이쿼리의 기본 문법
             $("#title").css("color", "red");
             $("*").css("color","red");
             $(".tit").css("color","blue");
             $("h3").css("color","green");
             $("h1,h2").css("color", "red"); // 두 가지 태그를 넣기

            // 종속선택자
             $("h2.tit").css("color", "red");

             parent(), parents(), parents(div)와 같이 선택할 수 있음, closest(요소이름)
             next(), prev(), siblings()
             nextAll(), prevAll()

             $("h2").next().css("color", "red");
             $("h2").parent().css("border", "1px solid red");
             $("#inner_wrap h1").css("color", "green");

            // 자식선택자
             $("#inner_wrap > p").css("color", "red");
             $(".txt").siblings().css("color", "red");  // 나를 뺀 형제들을 선택할 때
             $(".txt").parents().css("border", "1px solid red")

            // 상위요소 closest()

            $(".txt1").closest("div").css("border", "1px solid red");

        });

    </script>
</head>
<body>
    <!-- <h1 id="title">제목</h1> -->
    <!-- <h1>선택1</h1>
    <h2 class="tit">선택2</h2>
    <h2>선택2_1</h2>
    <h3>선택3</h3> -->

    <!-- 인접선택자 -->

    <!-- a는 c의 상위 closest
    b는 c의 부모 parent
    c는 b의 자식 children
    d는 e의 형 prev
    f는 e의 동생 next -->

    <!-- <div id ="wrap"> 
        <div id="inner_wrap">
            <h1>제목1</h1>
            <h2>제목2</h2>
            <p class="txt">내용1</p>
            <p>내용2</p>
            <p>내용3</p> -->

        <h1 class="title">선택자</h1>
        <div>
            <div>
                <p class="txt1">내용</p>
            </div>
        </div>

</body>

형식은 무조건 외워야 함. 이해의 문제가 아니라 어떻게 코드를 쓰는 건지는 기본적으로 익숙하게 쳐야 한다.

 

 

 

a는 c의 상위 closest

b는 c의 부모 parent

c는 b의 자식 children

d는 e의 형 prev

f는 e의 동생 next

 

 

탐색선택자 / 배열 관련 메서드

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script
            src="https://code.jquery.com/jquery-3.7.1.js"
            integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
            crossorigin="anonymous"></script>
        <script>
            $(function () {
                // 탐색선택자
                // $("#menu li:first").css("color", "red");
                // $("#menu li:last").css("color", "red");

                // $("#menu li:even").css("color", "red"); // 짝수 (기준은 인덱스번호 0, 2)
                // $("#menu li:odd").css("color", "blue"); // 홀수 (기준은 인덱스번호 1, 3)

                // $("#menu li").eq(2).css("color", "red"); // eq() 가로 안에는 인덱스 번호
                // $("#menu li:lt(2)").css("color", "blue"); // lt = less then 자기 자신보다 작은, 미만 (자신 포함 x)
                // $("#menu li:gt(2)").css("color", "blue");  // gt = greater then 자기 자신보다 큰 (자신 포함 x)

                // nth-child() -> 가로 안에 작성된 순서, 위치 번호 적기 
                // $("#menu1 li:nth-child(1)").css("color", "red");
                // $("#menu1 li:nth-child(2n)").css("color", "blue");  

                // $("#menu1 li:nth-last-child(2)").css("color", "green"); // 역순


---------------------------------------------------------------------------

                // 배열 관련 메서드 -> 읽기 (효율성 증가)
                // 배열 안에 객체가 들어있음
                 each, foreach -> return 이 없다 
                 map : 반복문 -> 결과를 새로운 배열로 만든다.
                 index() : 요소의 인덱스 번호

                 let obj = [
                     {"area" : "서울"},
                     {"area" : "부산"},
                     {"area" : "전주"}
                 ];

                 $(obj).each(function(i, o){  // i => index, o -> 배열의 값
                     console.log(i + ":" , o)  // 객체로 출력
                 });

                // $.each($("#menu2 li"), function(i, o){  // i => index, o -> 배열의 값
                //     console.log(i + ":" , o)  // <li></li> 태그 출력
                // });

                // obj.forEach(function(value,index,array){
                //     console.log(`Value: ${value}, Index: ${index}, Array: ${array}`)
                // });

                let arr1 = [
                    {
                        "area" : "서울",
                        "name" : "무대리"
                    },

                    {
                        "area" : "부산",
                        "name" : "홍과장"
                    },

                    {
                        "area" : "대전",
                        "name" : "박사장"
                    },

                    {
                        "area" : "서울",
                        "name" : "빅마마"
                    }
                ];

                // map : 반복문, for문이라고 생각하면 된다 -> 결과를 새로운 배열로 만든다. 
                let arr2 = $.map(arr1, function(a, b){  // a가 배열의 값을 받아온다, b가 인덱스
                    if (a.area === "서울"){
                        return a;
                    }
                });

                console.log(arr1);
                console.log(arr2);
                

                let index = $("li").index($("#list3"));
                console.log(index); // 2

            });
        </script>
    </head>
    <body>


        <ul id="menu1">
            <li>내용1_1</li>
            <li>내용1_2</li>
            <li id="list3">내용1_3</li>
            <li>내용1_4</li>

        </ul>
        <!-- <ul id="menu2">
            <li>내용2_1</li>
            <li>내용2_2</li>
            <li>내용2_3</li>
        </ul> -->
    </body>
</html>

 

 

 

자바스크립트 이벤트

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // Event 2가지 방식
        // 1. 인라인 정의 방식
        // 2. 내부 정의 방식

        window.onload = function(){
            let btn = document.getElementById("target");
            btn.addEventListener("click", function(event){
                alert('hellow world' + btn.value);
               //alert('hellow world' + event.target.value);
            });
        }
    </script>
</head>
<body>
    <!-- 1번 방식 -->
    <input type="button" onclick="alert('hello' + this.value)" value="인라인 이벤트">

    <input type="button" id="target" value="내부 이벤트">
</body>
</html>

 

 

 

이벤트 예제

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>

            * {
                list-style-type: none;
            }

            a {
                text-decoration: none;
                color: inherit;  
            }

            .tab {
                display: flex;
                align-items: center;
                padding: 1rem;
            }

            .tab__item {
                padding: 0.6rem 1.3rem;
                margin-right: 1rem;
                border: 1px solid #ddd;
                border-radius: 2rem;
            }

            .tab__item.active {
                display: inline-block;
                border: 1px solid tomato;
                background-color: tomato;
                color: white;
            }

            .tab__content-wrapper {
                padding: 1rem;
            }

            .tab__content {
                display: none;
            }

            .tab__content.active {
                display: block;
            }

        </style>
        <script>
            window.onload = function(){
                let tabItem = document.querySelectorAll(".tab__item");
                let tabContent = document.querySelectorAll(".tab__content");

                tabItem.forEach((item, index) => {

                    item.addEventListener("click", function(event){
                        event.preventDefault(); // a 태그 속성 제거 -> 링크 속성 금지
                        
                        tabContent.forEach((content) => {
                            content.classList.remove("active");
                        });

                        tabItem.forEach((content) => {
                            content.classList.remove("active");
                        });

                        tabItem[index].classList.add("active");
                        tabContent[index].classList.add("active");

                    }); //addEventListener end
                }); // forEach end
            };
        </script>
    </head>
    <body>

        <ul class="tab">
            <li class="tab__item active">
                <a href="#tab1">Tab 1</a>
            </li>
            <li class="tab__item">
                <a href="#tab2">Tab 2</a>
            </li>
            <li class="tab__item">
                <a href="#tab3">Tab 3</a>
            </li>
            <li class="tab__item">
                <a href="#tab4">Tab 4</a>
            </li>
        </ul>

        <!-- 탭 내용 영역 -->
        <div class="tab__content-wrapper">
            <div id="tab1" class="tab__content active">첫번째 탭 내용</div>
            <div id="tab2" class="tab__content">두번째 탭 내용</div>
            <div id="tab3" class="tab__content">세번째 탭 내용</div>
            <div id="tab4" class="tab__content">네번째 탭 내용</div>
        </div>

    </body>
</html>

 

 

추가적으로 공부하며 이렇게 만듦.

로그인 버튼들과 단체여행 있는 부분을 나란히 두고 싶은데ㅠ 안된다..

+ Recent posts