#javascript
#javascript
Вопрос:
Я создал несколько коробок в формате 3х3. Я хочу, чтобы каждый шаблон сохранялся со значением от 1 до 9. Я не уверен, как именно это сделать.
Мой текущий код таков:
function myFunction() {
alert("Alert from box");
}
<!DOCTYPE html>
<html>
<style>
.prac {
height: 150px;
width: 50px;
color: white;
background-color: grey;
border: 2px solid red;
margin: 20px;
</style>
<body>
<h2>Select a Discount Box!</h2>
<button class="prac" onclick="myFunction()">One</button>
<button class="prac" onclick="myFunction()">Two</button>
<button class="prac" onclick="myFunction()">Three</button>
<br>
<button class="prac" onclick="myFunction()">Four</button>
<button class="prac" onclick="myFunction()">Five</button>
<button class="prac" onclick="myFunction()">Six</button>
<br>
<button class="prac" onclick="myFunction()">Seven</button>
<button class="prac" onclick="myFunction()">Eight</button>
<button class="prac" onclick="myFunction()">Nine</button>
</body>
</html>
В настоящее время он просто возвращает одно и то же предупреждение для всех из них. Я хочу, чтобы он оповещал о том же сообщении плюс о количестве нажатых кнопок.
Комментарии:
1. можно себе представить, что установка onclick на
myFunction(1)
иmyFunction(2)
и т. Д. …myFunction(9)
Достаточно хороша?2. Согласно вашему коду, вы не передали никакого номера функции, которая показывает предупреждение, и не включили никакого номера в текст предупреждения. Я что-то здесь упускаю?
Ответ №1:
Вы можете либо передать аргумент напрямую, написав onclick="myfunction(1)"
, либо использовать некоторую дополнительную разметку, чтобы присвоить кнопкам некоторые идентификаторы и написать onclick="myfunction(this.id)"
Я продемонстрирую последнее:
<!DOCTYPE html>
<html>
<body>
<h2>Select a Discount Box!</h2>
<button id="1" class="prac" onclick="myFunction(this.id)">One</button>
<button id="2" class="prac" onclick="myFunction(this.id)">Two</button>
<button id="3" class="prac" onclick="myFunction(this.id)">Three</button>
<br>
<button id="4" class="prac" onclick="myFunction(this.id)">Four</button>
<button id="5" class="prac" onclick="myFunction(this.id)">Five</button>
<button id="6" class="prac" onclick="myFunction(this.id)">Six</button>
<br>
<button id="7" class="prac" onclick="myFunction(this.id)">Seven</button>
<button id="8" class="prac" onclick="myFunction(this.id)">Eight</button>
<button id="9" class="prac" onclick="myFunction(this.id)">Nine</button>
<script>
function myFunction(id) {
alert("Alert from box " id);
}
</script>
<style>
.prac {
height: 150px;
width: 50px;
color: white;
background-color: grey;
border: 2px solid red;
margin: 20px;
</style>
</body>
</html>
Редактировать: второй подход, который реорганизует, чтобы быть немного более эффективным. Программно назначает обработчик нажатия и извлекает идентификатор целевого события.
<!DOCTYPE html>
<html>
<body>
<h2>Select a Discount Box!</h2>
<button id="1" class="prac">One</button>
<button id="2" class="prac">Two</button>
<button id="3" class="prac">Three</button>
<br>
<button id="4" class="prac">Four</button>
<button id="5" class="prac">Five</button>
<button id="6" class="prac">Six</button>
<br>
<button id="7" class="prac">Seven</button>
<button id="8" class="prac">Eight</button>
<button id="9" class="prac">Nine</button>
<script>
for (let elem of document.getElementsByClassName('prac')) {
elem.addEventListener('click', myFunction);
}
function myFunction(e) {
alert("Alert from box " e.target.id);
}
</script>
<style>
.prac {
height: 150px;
width: 50px;
color: white;
background-color: grey;
border: 2px solid red;
margin: 20px;
</style>
</body>
</html>