괴발개발/Javascript+JQuery

JQ_split(), 박스클릭선택,박스입력선택 등

moonday 2021. 6. 30. 21:39
.split(',') : , 기호를 제외하여 값을 추출하기('')사이에 제거할 내용넣기

 

문제1: 박스 5개를 만들고, 입력창에서 입력한 숫자번쨰의 박스 테두리를 다른색으로 변경하기

문제2: 박스를 직접 클릭했을 때도, 박스 테두리를 다른색으로 변경하기

문제3: 입력창에 1,2,3과같이 ,(쉼표)를 이용하여 입력했을 때, 해당 박스테두리 변경하기

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>입력예제</title>
  <script src="../JS/jquery.min.js"></script>
  <link
  rel="stylesheet"
  href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"
/>
  <script>
    $(function(){
      $('#push').click(function(){
        $('.container div').css('border','2px solid black')
        // var value = $('#searchBox').val();
        valueArr= $('#searchBox').val();
        var valueArr=valueArr.split(',');
        // value = parseFloat(value);
        // if(isNaN(value) || value > 5 || value <= 0){
        //   //alert('잘못된 숫자입니다.')
        //   //$('.container div').css('animate__tada','2s') 애니메이션은 addClass로만해야한대
        //   return;
        // }
        // $('.container').children().eq(value-1).css('border','2px solid red');
        
      for(i=0; i<valueArr.length;i++){
        var value=valueArr[i];
        // if(){} //여기다가 숫자나 글자같은거 안맞을때 어케할지 넣어야돼,
        //지금은 안넣어서 범위 내 숫자 아니면 작동안하고, 인식할 수 있는 것만 작동함
        $('.container').children().eq(value-1).css('border','2px solid red');
      }
      valueArr.splice(0);
      })
      
      $('.container div').click(function(){
        $('.container div').css('border','2px solid black')
        $(this).css('border','2px solid red')
      })
    })
  </script>
  <style>
    .container div{border: 2px solid black; height: 50px; width: 50px;
      float: left; margin: 20px 20px 0;}    
  </style>
</head>
<body>
  <input type="text" id="searchBox">
  <button id="push">입력</button>
  <div class="container">
    <div class="box1">1</div>
    <div class="box2">2</div>
    <div class="box3">3</div>
    <div class="box4">4</div>
    <div class="box5">5</div>
  </div>
  
</body>
</html>
더보기
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>예제</title>
  <script src="../JS/jquery.min.js"></script>
  <style>
    .box{
      width: 100px; height: 100px; line-height: 100px; text-align: center;
      border: 2px solid black; float: left; margin-left: 30px;
    }
    .container::after{
      display: block; content: ''; clear: both;
    }
    .selected{
      border-color: red;
    }
    .container{
      margin-top:30px;
    }
  </style>
  <script>
    $(function(){
      //버튼 클릭 이벤트를 등록
      $('#btn').click(function(){
        //버튼 클릭 시, 입력창에 있는 값 가져온 후 확인
        var value=$('#search').val(); //콘솔에서 검은색=숫자, 파란색=숫자가아니고 문자열
        var valueArr=value.split(',');

        //모든 박스에 테두리를 기본으로 변경
        $('.container1 .box').removeClass('selected');
        $('.container2 .box').removeClass('selected');

        for(tmp of valueArr){
          tmp = parseInt(tmp);
          console.log(tmp)
          if(isNaN(tmp) || tmp > 5 || tmp <= 0){
            console.log('잘못된 숫자입니다.');
            continue;               
          }
        
          //입력한 번호에 맞는 박스만 테두리 변경
          //방법1 : eq()를 이용
          $('.container1 .box').eq(tmp-1).addClass('selected');
          //방법2 : 각 요소의 클래스 이름이 다른 것을 이용
          $('.container2 .box.box'+tmp).addClass('selected');
        }
          //다중 선택이 가능해야하기 때문에 click을 이용한 아래 코드는 사용할 수 없다
          // $('.container1 .box').eq(value-1).click();
          // $('.container1 .box.box'+value).click();
      })
    

      $('.box').click(function(){
        $(this).siblings().removeClass('selected'); //$(this).siblings()를하면 위,아래줄 따로가능
        $(this).addClass('selected');
      })
    })
  </script>
</head>
<body>
  <input type="text" id="search"><button id="btn">클릭</button>
  <div class="container container1">
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
    <div class="box">4</div>
    <div class="box">5</div>
  </div>
  <div class="container container2">
    <div class="box box1">1</div>
    <div class="box box2">2</div>
    <div class="box box3">3</div>
    <div class="box box4">4</div>
    <div class="box box5">5</div>
  </div>
</body>
</html>