简体   繁体   中英

Add CSS when clicking Button with Javascript

I have to add a css class with javascript when i click the 'Reservieren' Button. I have found many answers about this on google but I was not able to solve the problem with the answers.

my js.js code:

 function platzReservieren() { var court1 = document.getElementById('court1'); if (court1_ausgewaehlt === true) { court1.classList.add('canvas-reservated'); } } function leftClickOnCourt1() { var court1 = document.getElementById('court1'); if(court1.classList.contains('canvas-reservated')){ court1_reserviert = true; } var context = court1.getContext('2d'); if(court1_reserviert !== true){ if (court1_ausgewaehlt === false) { court1.classList.add('canvas-selected'); court1_ausgewaehlt = true; } else if (court1_ausgewaehlt === true) { court1.classList.remove('canvas-selected'); court1_ausgewaehlt = false; } } }
 <button class="btn btn-secondary " style="height: 50%; margin: 1% 0 0 0;" type="submit" name="reservieren" onclick="platzReservieren()" value="Reservieren">Reservieren</button> <div class="row" id="courts"> <div class="col-4"> <h3>Platz 1</h3> <canvas id="court1" class="canvas" width="300" height="350" onclick="leftClickOnCourt1()"></canvas> </div> <div class="col-4"> <h3>Platz 2</h3> <canvas id="court2" class="canvas" width="300" height="350" onclick="leftClickOnCourt2()"></canvas> </div> <div class="col-4"> <h3>Platz 3</h3> <canvas id="court3" class="canvas" width="300" height="350" onclick="leftClickOnCourt3()"></canvas> </div> </div>

Here is the working example:

 function platzReservieren() { var court1 = document.querySelector('button'); if (court1) { court1.classList.add('canvas-reservated'); } }
 .canvas-reservated { background-color: #ff0000; }
 <button class="btn btn-secondary " style="height: 50%; margin: 1% 0 0 0;" type="submit" name="reservieren" onclick="platzReservieren()" value="Reservieren">Reservieren</button>

Please add this id="court1" to the target element. You were trying to access an element that is not defined

 function platzReservieren() { var court1_ausgewaehlt = true var court1 = document.getElementById('court1'); if (court1_ausgewaehlt === true) { court1.classList.add('canvas-reservated'); } }
 .canvas-reservated{ color:red }
 <button id="court1" class="btn btn-secondary " style="height: 50%; margin: 1% 0 0 0;" type="submit" name="reservieren" onclick="platzReservieren()" value="Reservieren">Reservieren</button>

This can be done using jquery. Html button:

<button id="myBtn"></button>

Jquery:

$("#myBtn").click(
function(){
$("#elementToChangeStyle").css("propertyname","value");
});

Also include jquery in head if you haven't yet,

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

Here is a turorial: https://www.w3schools.com/jquery/jquery_css.asp

 const btn = document.querySelector('#reservation'); btn.addEventListener('click', () => { btn.classList.toggle('red'); });
 .red { background: red; }
 <button id="reservation" class="btn btn-secondary" style="height: 50%; margin: 1% 0 0 0;" type="submit" name="reservieren" value="Reservieren">Reservieren</button>

This is a little other approach compared to yours.

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .btn { height: 50%; margin: 1% 0 0 0; } .canvas-reservated { background-color: lightgreen; } </style> </head> <body> <button class="btn btn-secondary " type="submit" name="reservieren" value="Reservieren">Reservieren</button> <div class="row" id="courts"> <div class="col-4"> <h3>Platz 1</h3> <canvas id="court1" class="canvas" width="300" height="350" onclick="leftClickOnCourt1()"></canvas> </div> <div class="col-4"> <h3>Platz 2</h3> <canvas id="court2" class="canvas" width="300" height="350" onclick="leftClickOnCourt2()"></canvas> </div> <div class="col-4"> <h3>Platz 3</h3> <canvas id="court3" class="canvas" width="300" height="350" onclick="leftClickOnCourt3()"></canvas> </div> </div> <script> const btn = document.querySelector('button'); btn.addEventListener('click', function () { var court1 = document.getElementById('court1'); court1.classList.add('canvas-reservated'); }); </script> </body> </html>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM