• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 Ajax 1 : 개념정리 질문있습니다.

Ajax 1 : 개념정리 질문있습니다.

7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 글쓴이
  • #55875

    성경환
    참가자
      <body>
        <div class="container">
          <div class="row">
            <!-- <div class="col-sm-4">
              < img src="https://via.placeholder.com/600" class="w-100" />
              <h5>Card title</h5>
              <p>가격 : 70000</p>
            </div> -->
          </div>
        </div>
      </body>
      <script>
        var products = [
          { id: 0, price: 70000, title: 'Blossom Dress' },
          { id: 1, price: 50000, title: 'Springfield Shirt' },
          { id: 2, price: 60000, title: 'Black Monastery' },
        ];
        let template = `<div class="col-sm-4">
          < img src="https://via.placeholder.com/600" class="w-100" />
               <h5>${products[0].title}</h5>
               <p>${products[0].price}</p>
             </div>`;
        document.querySelector('.row').append(template);
    
    
    
    위에 html 코드 주석으로 만들고
    
    
    `` 으로 감싼다음에 화면에 띄우면 
    
    ${} 로 감싼 값들은 바뀌는데 
    
    
    <div class="col-sm-4"> < img src="https://via.placeholder.com/600" class="w-100" /> <h5>Blossom Dress</h5> <p>70000</p> </div>
    
    
    
    이런식으로 html 요소가 표시가 되지 않고 문자 그대로 나타납니다 뭐가 문제일까요??
    #55888

    성경환
    참가자
    document.querySelector('.row').append(template);
    
    이부분을 이렇게 
    
    document.querySelector('.row').innerHTML = template;
    
    바꾸니깐 정상적으로 되서 반복문으로 이런식으로 돌렸습니다.
    
    
     products.forEach((value, index) => {
            let template = `<div class="col-sm-4">
            < img src="https://via.placeholder.com/600" class="w-100" />
            <h5>${value['price']}</h5>
            <p>${value['title']}</p>
            </div>`;
            document.querySelector('.row').innerHTML = template;
          });
    그랬더니 맨 마지막 값만 화면에 출력이되고 
    
    
    
    
    이 외에 다른 값들이 출력이 되지 않습니다.. for문으로 반복했을때도 
    
    똑같은 결과가 나오는데 어디가 잘못된건가요??
     
     
    #55914

    codingapple
    키 마스터
    문자로 만든 html넣으려면 append말고 insertAdjacentHTML 이런걸 씁시다
    #55926

    성경환
    참가자
     products.forEach((value, index) => {
            let template = `<div class="col-sm-4">
            < img src="https://via.placeholder.com/600" class="w-100" />
            <h5>${value['price']}</h5>
            <p>${value['title']}</p>
            </div>`;
            document.querySelector('.row').innerHTML = template;
          });
    
    이런식으로 innerHTML로 넣었을때 값이 들어는 가는데 
    
    
    반복문으로 반복하려고 하는데 제대로 반복이 되지 않아서 바로 위 div태그까지 반복해야하는가 해서
    
    
        products.forEach((value, index) => {
            let template = `<div class='row'>
            <div class="col-sm-4">
          < img src="https://via.placeholder.com/600" class="w-100" />
          <h5>${value['price']}</h5>
          <p>${value['title']}</p>
          </div>
          </div>`;
            document.querySelector('.container').innerHTML = template;
          });
    forEach,for 반복문 둘다 반복이 일어나질 않네요
    
    
    
    #55975

    codingapple
    키 마스터
     .innerHTML말고 .insertAdjacentHTML같은거 씁시다
    #56029

    성경환
    참가자
        products.forEach((value, index) => {
          let template = `<div class="col-sm-4">
        < img src="https://via.placeholder.com/600" class="w-100" />
        <h5>${value['price']}</h5>
        <p>${value['title']}</p>
        </div>`;
          let pos = document.querySelector('.container');
          pos.insertAdjacentHTML('afterbegin', template);
        });
    
    
    알려주신대로 insertAdjacentHTML을 사용해서 이런식으로 코드를 짜니깐
    
    
    세로로 배치가 되서 
    
        .container {
            display: flex;
            flex-direction: row;
            justify-content: center;
            align-items: center;
          }
        </style>
      </head>
      <body>
        <div class="container" id="contain">
          <div class="row">
            <!-- <div class="col-sm-4">
                < img src="https://via.placeholder.com/600" class="w-100" />
                <h5>Card title</h5>
                <p>가격 : 70000</p>
              </div> -->
          </div>
        </div>
    
    미리 생성된 html태그가 들어갈 자리에 display flex 로 row로 놨는데 
    
    
    이렇게 미리 html css로 해놓고 자바스크립트로 값을 넣어줘도 상관없는건가요??
    
    #56061

    codingapple
    키 마스터
    .container말고 .row 안에 넣으면 가로로 배치됩니다
     
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠