tech.junha.kr

스크립트(script) 추가/제거하는 버튼 만들기

script를 실행하고 싶은 이름을 배열에 적으면, 버튼이 생성되며, 누르면 해당 js파일이 실행된다.

index.html에서 script파일을 수동으로 일일이 바꿔야하는 수고를 덜었다.

const fileList = ['class', 'promise']

const hasScript = (fileName) => {
  const currentScripts = document.head.getElementsByTagName('script')
  for(scriptElem of currentScripts){
    if(scriptElem.src.includes(fileName)){
      return true
    }
  }
  return false
}

const removeScript = (fileName) => {
  const currentScripts = document.head.getElementsByTagName('script')
  for(scriptElem of currentScripts){
    if(scriptElem.src.includes(fileName)){
      scriptElem.remove()
      console.log(`Success to delete ${fileName}`)
    }
  }
}

const addScript = (fileName) => {
  const script = document.createElement('script')
  script.setAttribute('src', `/${fileName}.js`)
  document.querySelector('head').appendChild(script)
  console.log(`Success to append ${fileName}`)
}

const createButton = (fileName) => {
  const buttonElem = document.createElement('button')
  buttonElem.textContent = fileName
  buttonElem.addEventListener('click', () => {
    hasScript(fileName)
      ? removeScript(fileName)
      : addScript(fileName)
  })
  return buttonElem;
}

const init = () => {
  fileList.forEach((fileName)=>{
    const buttonElem = createButton(fileName)
    document.querySelector('body').append(buttonElem)
  })
}

init()