inflearn logo
강의

Course

Instructor

JavaScript+jQuery from basics to practice: Basics Part.1

Practice - Discount Calculator

왜 결과값이 안나오는지 알수 있을까요? let대신 var를 써도 안나오네요ㅜㅜ

702

ellameyrosek

19 asked

0


      <section class="java2">
        <img src="img/3.png" alt="" />
        <ul>
          <li>
            <label for="original">원가:</label>
            <input type="text" id="original" />
          </li>
          <li>
            <label for="rate">할인율:</label>
            <input type="text" id="rate" />%
          </li>
        </ul>
        <button type="button" id="rate-btn">할인가격 계산하기</button>
        <div class="show-result"></div>
      </section>
 
 
.java2 {
  border: 1px solid #000;
  width: 500px;
  margin: 0 auto;
  text-align: center;
  color: #111;
  font-size: 1.6rem;
  img {
    width: 100%;
    height: auto;
  }
  input[type="text"] {
    border-bottom: 1px solid #000;
    font-size: 1.6rem;
  }
  button {
    background-color: #111;
    color: #fff;
    padding: 1rem;
    margin-top: 10px;
  }
}
 
 
  const rateBtn = document.getElementById("#rate-btn");
  const showPrice = () => {
    //사용자가 입력한 값을 두개의 변수에 저장함
    let original = document.querySelector("#original").value;
    let rate = document.querySelector("#rate").value;

    if (original > 0 && rate > 0) {
      let savedPrice = original * (rate / 100);
      let resultPrice = original - savedPrice;
    }
    document.querySelector(".show-result").innerHTML =
      "상품의 원래 가격은" +
      original +
      "원이고, 할인율은" +
      rate +
      "%입니다." +
      savedPrice +
      "원을 할인받아" +
      resultPrice +
      "원에 구매하실 수 있습니다.";
  };

  rateBtn.addEventListener("click", showPrice);

javascript jquery

Answer 3

0

kdy931023394

 

const rateBtn = document.getElementById("#rate-btn");
 
getElementById를 쓰셨기 때문에
뒤쪽 소괄호 안에는 #를 빼고 rate-btn만 작성해주셔야 선택이 제대로 됩니다.
위에 말씀 해주신 것처럼 onclick 사용시 해당 선언이 불필요하여 오류가 나지 않지만,
rateBtn 을 사용하실거면 그렇게 작성하시면 좋을 것 같습니다.
위처럼 작성 후 console에 rateBtn 찍으시면 null로 나와요!
#rate-btn을 작성하실거라면 querySelector를 작성하는 방법도 있습니다.
 
onclick 사용 없이 코드를 작성해봤습니다.
 
<script>
  const rateBtn = document.getElementById("rate-btn");
 
  const showPrice = () => {
 
    //사용자가 입력한 값을 두개의 변수에 저장함
   
    let original = document.querySelector("#original").value;
    let rate = document.querySelector("#rate").value;
   
    if (original > 0 && rate > 0) {
      var savedPrice = original * (rate / 100);
      var resultPrice = original - savedPrice;
    }
   
    document.querySelector(".show-result").innerHTML =
   
      "상품의 원래 가격은" + original + "원이고, 할인율은" + rate +
   
      "%입니다." + savedPrice + "원을 할인받아" + resultPrice + "원에 구매하실 수 있습니다.";
 
  };  
 
  rateBtn.addEventListener("click", showPrice)

</script>
 
저도 같은 학생이라 도움 되셨길 바라요!

0

qls2033

addEventListener을 쓰셔도 됩니다. addEventListener을 쓰면 onclick를 html에 안 쓰셔도 됩니다. 우주열차님이 답변주신 것처럼 호이스팅을 공부해보시면 var는 호이스팅이 되서 강사님께서 var를 쓰신 것 같습니다. let을 쓰고 싶으시다면 let을 함수 바깥에다가 선언을 하시면 될 것 같습니다. 저도 수강하는 사람이라 도움이 되셨으면 좋겠습니다

0

woojjus2

        <section class="java2">
            <img src="resource/sale.png" alt="" />
            <ul>
                <li>
                    <label for="original">원가:</label>
                    <input type="text" id="original" />
                </li>
                <li>
                <label for="rate">할인율:</label>
                <input type="text" id="rate" />%
                </li>
            </ul>
            <button type="button" id="rate-btn" onclick="showPrice()">할인가격 계산하기</button>
            <div class="show-result"></div>
        </section>
        <script>

 

먼저 버튼에 onclick="showPrice()" 함수가 빠졌구요

스크립트부분에는 

        <script>
            const rateBtn = document.getElementById("#rate-btn");
            const showPrice = () => {
                //사용자가 입력한 값을 두개의 변수에 저장함
                let original = document.querySelector("#original").value;
                let rate = document.querySelector("#rate").value;

                if (original > 0 && rate > 0) {
                    var savedPrice = original * (rate / 100);
                    var resultPrice = original - savedPrice;
                }
                document.querySelector(".show-result").innerHTML =
                "상품의 원래 가격은" +
                original +
                "원이고, 할인율은" +
                rate +
                "%입니다." +
                savedPrice +
                "원을 할인받아" +
                resultPrice +
                "원에 구매하실 수 있습니다.";
            };
        </script>

if 문안에 let이 아닌 var로 해주셔야 됩니다.

이유는 자바스크립트 호이스팅 을 한번 공부해보시길 추천드립니다.

https://velog.io/@yejineee/ES6%EC%9D%98-let-const

 

 

0

ellameyrosek

아 버튼에 showprice를 안넣었네요. 선생님 그런데 rateBtn.addEventListener("click", showPrice);

이렇게는 사용이 불가한건가요??????????

 

 

0

ellameyrosek

그리고 let 지역스코프라서 함수안에 써도 되는줄 알았는데 안되는걸까요? 링크 안에서도 지역 스코프라고 되어있어서요.

3강 질문

0

18

1

74. 데이터 캐시 - 1 (이론) 강의 영상 누락

0

27

1

2강 nodejs 3단계 설명 질문

0

33

1

imagesLoaded에 관한 질문

0

19

2

useEffect와 lifecycle문의

0

26

2

프론트엔드 학습 수준 문의

0

37

2

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

48

2

최근 코테, 과제 테스트 트렌드

0

68

2

lucide react 아이콘 설치

0

46

2

17강 zustand store 서버에서 생성

1

36

1

문의관련 문의

0

44

2

next.js 를 2대이상 실행하는 경우 제공하는 cache 기능들은 어떻게 되나요?

0

56

2

76. 전문성 더하기: 놓치면 아쉬운 관련 기술들 수업 자료가 없어요.

0

48

2

ai 도구 질문

0

31

1

저는 왜 콘솔에서 props가 한 줄만 찍히나요?

0

47

1

렌더링 차단 리소스 javascript 실행에 관련해서 질문 있습니다.

0

48

2

상단에 일시정지 새로고침하는 것은 어떻게 나오게 하나요??

0

581

1

10:51 list와 num에 대한 출력 코드가 둘 다 있는데 왜 num만 출력되는지 ?

0

363

0

변수 선언 시 undefined

0

492

1

파라미터랑 아규먼트가 같은건가요?

0

351

0

강의 중에 scrip에 관해 질문드립니다.

0

396

2

자바스크립트 코드 실행

0

306

0

노드 버전 질문

0

375

1

할인을 메긴 결과값이 나오지를 않습니다. 코드 한번 봐주시길 부탁드립니다 ㅜㅜ

0

471

1