메뉴 건너뛰기

조회 수 300 댓글 2
<!DOCTYPE html>
  <html>
  <head>
  <meta charset="UTF-8">
  <title>이벤트 객체의 target</title>
  <script>
  window.onmouseover = function(e) {
  if(e.target.tagName.toLowerCase() != "span") return;
  e.target.style.textDecoration ="underline";
  }
  window.onmouseout = function(e) {
  if(e.target.tagName.toLowerCase() != "span") return;
  e.target.style.textDecoration ="none";
  }
  </script>
  </head>
  <body>
  <h3>span 태그에만 onmouseover/onmouseout</h3>
  <hr>
  <p>span 태그에 대해서만 <span>마우스</span>가 올라올 때
  밑줄이 그어지고 <span>마우스</span>가 내려갈 때 밑줄이 사라지도록
  <span>자바스크립트 코드</span>를 작성한다.
  </p>
  </body>
  </html>

 

 

빨간글씨인 if() return; 은 책에서 본적이 없는 내용 같아서요.

조건문만 쓴뒤 실행문없이 리턴을 바로 쓰는것엔 어떤 의미가 있나요?

그리고 소문자 체크를 하는 이유는 문제 밑에 힌트의 내용으로는 태그네임 프로퍼티는 항상 대문자라고 하셨는데

태그네임으로 가져오는 프로퍼티는 자바스크립트에서 항상 대문자로 인식을 하기 때문에

우리가 쓰는 소문자랑 체크를 할려면 tolowercase를 써줘야 한다는 말인가요?

 

원래라면

 

function (e){

if(e.target.tagName.toLowerCase() !== span){

e.target.style.textDecoration="none";

}

}

이런식의 코드 작성으로도 되는건가요?

?
  • ?
    관리자 2018.10.24 09:00
    1. e.target은 책 페이지 397, 예제 9-6, 그리고 표 9-2에 있습니다.
    e.target은 현재 이벤트를 유발시킨 DOM 객체입니다. 말씀한 것과 같이 tagName은 모든 DOM 객체가 가진
    프로퍼티로 항상 대문자이지요(표 8-1 참고)

    2. return을 하는 이유는 window 객체에 onmouseover 리스너를 다는 문제이기 때문입니다.
    span 객체에 onmouseover를 달면 굳이 span인지 비교할 필요가 없겠지만, window 객체의 모든 자식 DOM 객체들 위해 마우스가 올라가면 계속
    mouseover 이벤트가 발생하기 때문에, span 객체를 구분하기 위해 아래의 조건문을 사용합니다.
    if(e.target.tagName.toLowerCase() != "span")

    즉 span 객체가 아니라면 바로 리턴하여 아무일도 하지 않기 위함입니다.

    3. tagName이 항상 대문자로 태그이름을 가지고 있기 때문에 이를 소문자로 바꾸기 위해
    e.target.tagName.toLowerCase()를 사용한 것이고 다음과 같이 비교합니다.
    if(e.target.tagName.toLowerCase() != "span")
    다음과 같이 해도 됩니다.
    if(e.target.tagName != "SPAN")

    4. 다음 코드는 좀 이상한 것 같습니다.
    function (e){
    if(e.target.tagName.toLowerCase() !== span) {
    e.target.style.textDecoration="none";
    }
    }

    !== 연산자는 엄격한 비교를 위한 것인데, "span"으로 해야 합니다. 그리고 "none"으로 한 것은
    onmouseout의 코드로 사용해야하는데...

    이상입니다.
  • ?
    muuum 2018.10.25 06:18
    이해가 쏙쏙 됩니다. 감사합니다!

QnA

공부하면서 궁금했던 것을 질문해보세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18282
243 7장 실습문제10번 자바 2019.06.13 747
242 5장 연습문제 홀수 번 질문 1 채XX 2019.06.17 1997
241 자바스크립트로 배경이미지슬라이드 만들어볼려고 열심히 노력하는데 1 hansung 2019.06.24 219
240 423쪽, 예제9-20 1 사랑나눔 2019.06.27 127
239 배경슬라이드가 뭔지 추가설명하겠습니다 2 hansung 2019.06.27 92
238 책 151p 3장 오픈챌린지 문제질문입니다. 3 이상민 2019.07.19 239
237 361page 예제 8 -2 질문입니다. 1 ㅁㄴㅇㄻㄴㅇㄹ 2019.08.14 67
236 377page 8장 오픈챌린지 질문입니다.(다시 질문 올립니다.) 2 멍청이 2019.08.15 359
235 384page 8장 실습문제5번 질문입니다. 6 1234 2019.08.16 441
234 385p 8장 실습문제 07번 질문입니다. 1 12345 2019.08.16 616
233 교재403page 예제9-8 코드 질문입니다. 1 asdf 2019.08.19 101
232 교재 413page 질문입니다. 1 ㅁㅇㄻㄴㅇㄹ 2019.08.20 98
231 교재425page 9장 오픈챌린지 질문입니다. [재수정해서 올립니다.] 3 ㅁㄴㅇㄻㄴㅇㄹ 2019.08.20 770
230 425페이지 오픈챌린지09번 질문입니다. 1 멍청이 2019.08.22 179
229 432페이지 9장 실습문제9번 질문입니다. 1 asdf 2019.08.22 266
228 465page 오픈챌린지10장 질문입니다. 2 asdf 2019.08.23 413
227 432PAGE 9장 실습문제 9번 재질문올립니다. 2 asdfSDF 2019.08.23 154
226 10장 window.open 질문입니다. 1 멍청이 2019.08.23 379
225 교재 468page 실습문제 2-2번 질문입니다. 3 세린 2019.08.23 255
224 게시판QnA질문입니다. 4 file asdf 2019.08.30 182
목록
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 21 Next
/ 21
위로