랜덤 선택(2)

jb kim·2021년 12월 22일
0

Web Projects

목록 보기
25/50

js

입력받아 콤마로 나누기

const tagsEl = document.getElementById('tags');
const textarea = document.getElementById('textarea');

textarea.focus();   //시작시 입력창 선택됨

textarea.addEventListener('keyup', (e) => {
  createTags(e.target.value);
  }
});

function createTags(input) {
  const tags = input
    .split(',')
    .filter((tag) => tag.trim() !== '')
    .map((tag) => tag.trim());
    //필터=>빈입력방지, 맵=>공백제거
    
  console.log(tags); //콤마로 분리된 배열확인
}

각각 태그를 만들기

  tagsEl.innerHTML = '';

  tags.forEach((tag) => {
    const tagEl = document.createElement('span');
    tagEl.classList.add('tag');
    tagEl.textContent = tag;
    tagsEl.appendChild(tagEl);
  });

엔터 입력시

//키입력시 입력된 문자열들로 태그를 만들고 랜덤 선택함
textarea.addEventListener('keyup', (e) => {
  createTags(e.target.value);

  if (e.key === 'Enter') {
    setTimeout(() => {   
      e.target.value = '';  // 입력창 클리어
    }, 10);

    randomSelect(); //랜덤 선택
  }
});


function randomSelect() {
  const times = 30;

  const interval = setInterval(() => {
    const randomTag = 랜덤태그();

    if (randomTag !== undefined) {
      하이라이트(randomTag);

      setTimeout(() => {
        하이라이트제거(randomTag);
      }, 100);
    }
  }, 100);

  setTimeout(() => {
    clearInterval(interval);

    setTimeout(() => {
      const randomTag = 랜덤태그();

      하이라이트(randomTag);
    }, 100);
  }, times * 100);
}

function 랜덤태그() {
  const tags = document.querySelectorAll('.tag');
  return tags[Math.floor(Math.random() * tags.length)];
}

function 하이라이트(tag) {
  tag.classList.add('highlight');
}

function 하이라이트제거(tag) {
  tag.classList.remove('highlight');
}

profile
픽서

0개의 댓글