Saya ingin fungsi home(); untuk mengeksekusi hanya sekali. Ketika pemain memilih senjata mereka, itu membuat tombol beranda setiap kali mereka mengklik salah satu dari tiga tombol. bagaimana itu bisa berjalan sekali sehingga hanya satu tombol beranda yang dibuat terlepas dari berapa kali game itu dimainkan lagi? https://codepen.io/hamisakim/full/XWjVEbx

function home(){ const button = document.createElement("button");
           button.innerHTML = "Homepage";
            button.setAttribute("id",'homebutton')
              const postDiv = document.querySelector('#choices');
                postDiv.appendChild(button);
                

function buttonClick(e) {
  home();
  const choices = ["lapis", "papyrus", "scalpellus"];
  const randomIndex = Math.floor(Math.random() * choices.length);
  computer.currentChoice = choices[randomIndex];
    document.querySelector("#homepageText").innerHTML = '';
    document.querySelector('h3').innerHTML = 'choose below to play again!';
  document.getElementById('choices').removeEventListener('click',null);
-1
Sami Hakim 29 Desember 2020, 16:33

3 jawaban

Jawaban Terbaik

Karena fungsi home() Anda menambahkan <button id='homebutton'>, Anda dapat menggunakan JS untuk periksa apakah ID itu sudah ada di DOM

function home() {
    if (!document.getElementById("homebutton")) {
        // Create button, since it's not yet there
    }
}
0
0stone0 29 Desember 2020, 13:38

Tambahkan tanda centang jika sudah berjalan. Boolean sederhana

var hasHomeRun = false;
function home(){
  if (hasHomeRun) return;
  hasHomeRun = true;
  ...

Pilihan lain adalah memeriksa untuk melihat apakah elemen itu ada

function home(){
  if (document.querySelector('#choices')) return;
  ...
1
epascarello 29 Desember 2020, 13:36

Saya pikir Anda membutuhkan ini:

window.runHome = false;
const home = function() {
  console.log('run home');
}
const buttonClick = function() {
  if(!window.runHome) {
    window.runHome = 1;
    home();
  }
}
<button type="button" onclick="buttonClick()">Click</button>
0
Mohammad Abedi 29 Desember 2020, 13:37