Итак, я пытался сделать игру, чтобы выучить какой -то 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Спецификация исключений в более широком виде для переоценки виртуальной функции [Duplicate]
Anonymous » » в форуме C++ - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-