1

i tried to make a function to open and close a rules window and i don't know why but it doesn't work, i tried to search for examples to the same idea but however i try it wouldn't work, and yeah that's it please if some one know leave a comment

const openRulesBtn = document.getElementById("openRulesBtn");
const rulesWindow = document.getElementById("bgRules");
const closeRulesBtn = document.getElementById("rulesCancelBtn");

openRulesBtn.onclick = openRules();
closeRulesBtn.onclick = closeRules();

function openRules() {
  rulesWindow.style.display = "block";
}

function closeRules() {
  rulesWindow.style.display = "none";
}
.openRulesBtn {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 7rem;
  height: 1rem;
  margin: 2rem 4rem;
  border: 2px solid hsl(217, 16%, 45%);
  border-radius: 8px;
  text-transform: uppercase;
}

.openRulesBtn:hover {
  cursor: pointer;
}

#bgRules {
  position: absolute;
  top: 50%;
  left: 50%;
  display: none;
}

#rulesWindow {
  position: relative;
  z-index: 10;
  background-color: white;
}

#rulesCancelBtn {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 11;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 1px solid rgba(0, 0, 0, 0.3);
  cursor: pointer;
}

#rulesCancelBtn:hover {
  background-color: rgb(255, 30, 0);
}
<div id="bgRules">
  <img id="rulesWindow" src="/images/image-rules.svg" alt="" />
  <div id="rulesCancelBtn">x</div>
</div>
<footer>
  <div class="openRulesBtn" id="openRulesBtn">Rules</div>
</footer>
AlexSp3
  • 2,201
  • 2
  • 7
  • 24
Rayzel
  • 31
  • 5
  • 1
    You are not appending a function to the onclick attribute, but calling the function when doing `openRulesBtn.onclick = openRules();`. Try doing `openRulesBtn.onclick = openRules;`. – AlexSp3 Jan 14 '22 at 18:16
  • oh thank you i didnt know that – Rayzel Jan 14 '22 at 18:21

1 Answers1

1

functionName() executes/calls the function. To add event listeners do this :

openRulesBtn.onclick = openRules;
closeRulesBtn.onclick = closeRules;

const openRulesBtn = document.getElementById("openRulesBtn");
const rulesWindow = document.getElementById("bgRules");
const closeRulesBtn = document.getElementById("rulesCancelBtn");

openRulesBtn.onclick = openRules;
closeRulesBtn.onclick = closeRules;

function openRules() {
    rulesWindow.style.display = "block";
}
function closeRules() {
    rulesWindow.style.display = "none";
}
.openRulesBtn {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 7rem;
    height: 1rem;
    margin: 2rem 4rem;
    border: 2px solid hsl(217, 16%, 45%);
    border-radius: 8px;
    text-transform: uppercase;
}

.openRulesBtn:hover {
    cursor: pointer;
}

#bgRules {
    position: absolute;
    top: 50%;
    left: 50%;
    display: none;
}

#rulesWindow {
    position: relative;
    z-index: 10;
    background-color: white;
}

#rulesCancelBtn {
    position: absolute;
    top: 0;
    right: 0;
    z-index: 11;
    display: flex;
    justify-content: center;
    align-items: center;
    border: 1px solid rgba(0, 0, 0, 0.3);
    cursor: pointer;
}

#rulesCancelBtn:hover {
    background-color: rgb(255, 30, 0);
}
<div id="bgRules">
  <img id="rulesWindow" src="/images/image-rules.svg" alt="" />
  <div id="rulesCancelBtn">x</div>
</div>
<footer>
  <div class="openRulesBtn" id="openRulesBtn">Rules</div>
</footer>
Tushar Shahi
  • 16,452
  • 1
  • 18
  • 39