Итак, я пытался сделать игру, чтобы выучить какой -то Javascript, но всякий раз, когда я пытаюсь создать нового слушателя событий с помощью функции, затем изменяя целевой аргумент, просто переопределяет любые другие слушатели событий, созданные с той же функцией. Пример html
Chess x Pokemon
Teambuilder
Add Piece:
Validate
Clear
< /code>
css < /p>
canvas {
border: solid;
border-width: 5px;
}
img {
display: none;
}
.text {
position: absolute;
left: 35%;
top: 0;
height: 59.5%;
width: 35%;
background-color: rgb(220,220,220);
margin: 8px;
padding: 5px;
}
#teambuilder {
position: absolute;
right: 0;
top: 0;
height: 95%;
width: 25%;
background-color: rgb(220,220,220);
margin: 8px;
padding: 5px;
}
< /code>
javascript < /p>
var team = document.getElementById("team"); // Where HTML is appended
var text = document.getElementById("input"); // The input field for adding pieces
let pieceidx = 0; // The counter for how many pieces there are
// Define Pieces, Abilities, etc.
let pieces = ["Pawn", "Knight"];
let lowerpieces = [];
for (i in pieces) {
lowerpieces.push(pieces.toLowerCase());
}
let abilities = ["test123"];
let lowerabilities = [];
for (i in abilities) {
lowerabilities.push(abilities.toLowerCase());
}
// Get selected input
function getInput(a) {
if (a > 0) {
return document.getElementById("ability" + a); // Ability Input
} else {
return document.getElementById("input"); // New Piece Input
}
}
// Input
function eventFunction() {
if (text === getInput(0)) {
if (!lowerpieces.includes(text.value.toLowerCase()) && text.value !== "") {
alert("Error: '" + text.value + "' is not a valid piece.");
} else if (text.value !== ""){
team.innerHTML += ` ${pieces[lowerpieces.indexOf(text.value.toLowerCase())]}
`;
pieceidx++;
team.innerHTML += `Ability:
`;
// Update value of text, add new event listener
text = getInput(pieceidx);
getInput(pieceidx).addEventListener('focus', function() {text = getInput(pieceidx); });
addListeners(text);
}
} else {
if (!abilities.includes(text.value.toLowerCase()) && text.value !== "") {
alert("Error: '" + text.value + "' is not a valid ability.");
}
}
}
function addListeners(target) {
target.addEventListener('keydown', function(key) {
if (key.code == "Enter") { target.blur(); }
});
target.addEventListener('blur', function() { eventFunction() });
}
text.addEventListener('blur', function() { eventFunction() });
// Unfocus text when enter is pressed
text.addEventListener('keydown', function(key) {
if (key.code == "Enter") {
text.blur();
}
});
// Change value of text when a new input field is selected
getInput(0).addEventListener('focus', function() {text = getInput(0)})
}
< /code>
Проблема заключается в том, что когда я добавляю вторую часть, слушатель событий, который должен позволить мне выйти из текстового поле «Способность», нажав Enter Stops, работая для способности первой части. Слушатели событий добавляются в функцию addlisteners ().
Подробнее здесь: https://stackoverflow.com/questions/796 ... rriding-th
Как я могу зарегистрировать нового слушателя событий с помощью функции без переоценки старого слушателя? ⇐ Javascript
Форум по Javascript
1749420750
Anonymous
Итак, я пытался сделать игру, чтобы выучить какой -то Javascript, но всякий раз, когда я пытаюсь создать нового слушателя событий с помощью функции, затем изменяя целевой аргумент, просто переопределяет любые другие слушатели событий, созданные с той же функцией. Пример [b] html
Chess x Pokemon
Teambuilder
Add Piece:
Validate
Clear
< /code>
css < /p>
canvas {
border: solid;
border-width: 5px;
}
img {
display: none;
}
.text {
position: absolute;
left: 35%;
top: 0;
height: 59.5%;
width: 35%;
background-color: rgb(220,220,220);
margin: 8px;
padding: 5px;
}
#teambuilder {
position: absolute;
right: 0;
top: 0;
height: 95%;
width: 25%;
background-color: rgb(220,220,220);
margin: 8px;
padding: 5px;
}
< /code>
javascript < /p>
var team = document.getElementById("team"); // Where HTML is appended
var text = document.getElementById("input"); // The input field for adding pieces
let pieceidx = 0; // The counter for how many pieces there are
// Define Pieces, Abilities, etc.
let pieces = ["Pawn", "Knight"];
let lowerpieces = [];
for (i in pieces) {
lowerpieces.push(pieces[i].toLowerCase());
}
let abilities = ["test123"];
let lowerabilities = [];
for (i in abilities) {
lowerabilities.push(abilities[i].toLowerCase());
}
// Get selected input
function getInput(a) {
if (a > 0) {
return document.getElementById("ability" + a); // Ability Input
} else {
return document.getElementById("input"); // New Piece Input
}
}
// Input
function eventFunction() {
if (text === getInput(0)) {
if (!lowerpieces.includes(text.value.toLowerCase()) && text.value !== "") {
alert("Error: '" + text.value + "' is not a valid piece.");
} else if (text.value !== ""){
team.innerHTML += `[u] ${pieces[lowerpieces.indexOf(text.value.toLowerCase())]} [/u][/b]
`;
pieceidx++;
team.innerHTML += `Ability:
`;
// Update value of text, add new event listener
text = getInput(pieceidx);
getInput(pieceidx).addEventListener('focus', function() {text = getInput(pieceidx); });
addListeners(text);
}
} else {
if (!abilities.includes(text.value.toLowerCase()) && text.value !== "") {
alert("Error: '" + text.value + "' is not a valid ability.");
}
}
}
function addListeners(target) {
target.addEventListener('keydown', function(key) {
if (key.code == "Enter") { target.blur(); }
});
target.addEventListener('blur', function() { eventFunction() });
}
text.addEventListener('blur', function() { eventFunction() });
// Unfocus text when enter is pressed
text.addEventListener('keydown', function(key) {
if (key.code == "Enter") {
text.blur();
}
});
// Change value of text when a new input field is selected
getInput(0).addEventListener('focus', function() {text = getInput(0)})
}
< /code>
Проблема заключается в том, что когда я добавляю вторую часть, слушатель событий, который должен позволить мне выйти из текстового поле «Способность», нажав Enter Stops, работая для способности первой части. Слушатели событий добавляются в функцию addlisteners ().
Подробнее здесь: [url]https://stackoverflow.com/questions/79658179/how-can-i-register-a-new-event-listener-with-a-function-without-it-overriding-th[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия