Как я могу зарегистрировать нового слушателя событий с помощью функции без переоценки старого слушателя?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу зарегистрировать нового слушателя событий с помощью функции без переоценки старого слушателя?

Сообщение Anonymous »

Итак, я пытался сделать игру, чтобы выучить какой -то 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»