메뉴 건너뛰기

2020.05.24 19:03

이벤트 관련 질문

조회 수 125 댓글 3

제가 원하는 색깔로 변경했을 때 사진의 모서리색상을 바꿀려 했는데 적용이 되지않습니다.

제가 선택한 색으로 바뀌게 할려면 무엇을 추가해야 하는지 궁금합니다.

<!DOCTYPE html>
<html>
<head><title>연습</title>
     <script>
   
        function change(obj){
            var color = document.getElementById("colorInput").value;
          document.body.style.borderColor= color;       
        }
        
    </script>
    </head>
    <body>
    <h3>연습</h3>
        <hr>
        <form>
        <input type="color" id="colorInput"
                    onchange="change(this)">
       <img style="border: 20px solid blue" src="park/mango.jpg" onchange="bgchange(this)"
              width="640" height="360">
           
        </form>
       
    </body>
</html>

?
  • ?
    관리자 2020.05.24 23:51

    3가지 문제에 대해 알려드립니다.
    1. <img style="border: 20px solid blue" src="park/mango.jpg" onchange="bgchange(this)" 에서
    onchange() 는 무슨 용도로 하였나요?
    --> 필요없는 것 같으니 지우는 것이 좋겠습니다.

    2. function change(obj){
    var color = document.getElementById("colorInput").value;
    document.body.style.borderColor= color;
    }
    이 함수의 의미에 대해서 잘 알고 있어야 문제를 풀 수 있습니다.
    --> 이 함수의 매개변수로 사용한 obj를 함수에서 전혀 이용하고 있지 않습니다. obj가 바로 document.getElementById("colorInput")가 리턴하는 객체와 동일합니다.
    그러므로 이 함수는 다음과 같이 고쳐야 합니다.

    function change(obj){
    var color = obj.value;
    document.body.style.borderColor= color;
    }

    그리고 이 함수 내에 document.body.style.borderColor= color; 는 혹시 무슨 뜻으로 사용하였나요?
    이것은 body 태그, 그러니까 웹 페이지 전체의 테두리 색을 color로 지정하겠다는 뜻입니다. 이 문제와 아무 상관없는 코드입니다. 이 코드로 지워야 합니다.

    3. document.getElementById("colorInput") 에서 getElementById() 함수의 의미를 잘 알고 사용해야 합니다.
    document.getElementById("colorInput")의 의미는 id=colorInput라는 속성을 가진 태그를 찾아 리턴해달라는 코드입니다. 이 책의 358페이지를 등을 공부하면 분명해질것니다.

    이제 이 질문의 각 부분을 분석하였습니다. 

     

    그러면 이제 답을 찾아가 봅시다.

    코드를 다음과 같이 고쳐야 합니다.

    1. <img> 태그에 "id=myimg" 속성을 넣고,
    2. 함수 change()에서 id=myimg인 태그를 찾고 그 DOM 객체의 스타일에서 외곽선의 색을 바꾸는 코드를 삽입해야 합니다.
    document.getElementById("myimg").style.borderColor= color;

    결과적으로 질문한 분이 원하는 것은 다음 코드입니다.
    <!DOCTYPE html>
    <html>
    <head><title>연습</title>
    <script>

    function change(obj){
    var color = obj.value;
    document.getElementById("myimg").style.borderColor= color;
    }

    </script>
    </head>
    <body>
    <h3>연습</h3>
    <hr>
    <form>
    <input type="color" id="colorInput"
    onchange="change(this)">
    <img id="myimg" style="border: 20px solid blue" src="park/mango.jpg"
    width="640" height="360">

    </form>

    </body>
    </html>

    * Q&A에 올린 질문과 저의 답을 지우지 말아 주시기 바랍니다.

  • ?
    왕초보 2020.05.25 00:22
    제가 아직 개념을 완벽하게 이해하지 못하고 자꾸자꾸 시도하는것 같습니다. 제가 기본적인 내용에 대해 더 자세하게 배우고 이해하고 싶은데요 혹시 추천하시는 도서나 공부방법에 대해 조언해주시면 감사하겠습니다.
  • ?
    관리자 2020.05.25 00:36

    그렇군요.
    여러 시도를 하는 것은 정말이지 좋은 학습 태도입니다. 열정이 커다는 뜻이죠.
    왕초보 님의 열정이 학습의 열매로 맺어지기를 바랍니다.

    책을 바꾼다고 기본 지식이 늘 것 같지는 않습니다.
    혹시 명품 웹 프로그래밍 책을 교재로 공부하고 있는 학생이라면, 책을 차분히 읽고 예제들을 하나씩 자기 손으로 만드는 연습이 우선입니다.
    그리고 한 장이 끝나면 연습문제와 실습문제를 모두 풀면서 자신의 지식을 확인하고 완성하는 것입니다.
    공부는 서둘러서 되지 않습니다. 약간의 지속과 인내의 시간이 꼭 필요합니다.

    지금 여기 올린 작은 질문이 CSS 스타일, 간단하지만 함수 등을 만들 수 있는 자바스크립트 언어, DOM 객체, 이벤트 리스너 등 사실상 여러 지식을 필요로 합니다.
    지금 제가 나열한 지식을 모두 알아야 만들 수 있어요. 그리고 이들에 대한 설명은 어떤 책보다 이 책에 잘 나와 있습니다.
    질문하고 잠깐 정답을 얻을 수는 있어도 또 다른 문제는 풀 수 없을지도 모릅니다.

    이 사이트의 책, 명품 HTML5+CSS3+Javascript 웹프로그래밍 책이면 충분하고 훌륭함니다. 본문을 읽고 연습문제를 풀면서
    이해되지 않는 것들은 주저 없이 질문을 올리면 자세한 설명을 드리겠습니다.

    그럼.


QnA

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

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18282
363 이거 1장 부터 시작해서 답을 어디서 확인해야 되죠? 2020.09.27 224
362 이 책을 다 본 뒤 어떤 공부를 더 하는게 좋을까요? 1 file muuum 2018.10.31 526
361 윈도우 브라우저와 윈도우 탭 2 tc0712 2021.11.22 57
360 웹서버와 클라이언트 2 tc0712 2021.09.14 95
359 웹서버소프트웨어 1 file park 2023.04.15 199
358 웹 프로그래밍 책 답안지 1 mumu 2017.03.06 14076
357 웹 워커 13-7 결과 55가 출력되지 않습니다. 1 chg115 2021.12.03 101
356 웹 사이트 접속 질문 있습니다. 1 초심자 2021.08.21 131
355 오픈챌린지10번 재질문입니다. 2 이상 2019.08.30 267
354 오픈챌린지 9장 littlelion 2018.06.20 1002
353 오픈챌린지 6장 질문 littlelion 2018.06.20 435
352 오픈챌린지 5장 ces 2024.04.19 23
351 오픈챌린지 5 file ab 2023.02.17 171
350 오픈챌린지 4장 질문 1 littlelion 2018.04.18 390
349 오픈챌린지 4 1 오픈 2018.04.13 275
348 오픈챌린지 1 ab 2023.02.16 140
347 오픈 첼린지 9장 질문 있습니다. 4 file muuum 2018.10.21 633
346 오픈 챌린지 6장 1 ㄱㄷㄱㄷ 2018.04.22 514
345 오타제보합니다. 1 컴퓨터공학생 2020.08.30 96
344 오류 - 6장 3.식과 연산자 - 비트 논리 연산 1 김성필 2021.04.27 138
목록
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 21 Next
/ 21
위로