Я пытаюсь создать интерактивные divs, которые будут устанавливать переменную после их нажатия.Создание прослушивателей событий для отдельных DIVS, которые еще не были созданы, и как запускать отдельную команду?
Например,
Если моя программа должна была делать с игрой с шарами.
Когда пользователь вводит имя и какой мяч они хотят (скажем, имя = Джонни и Бал = BasketBall), а затем нажимает «Создать мяч», моя программа создаст div, называемый «Ball0». Дисплей «Ball0» отобразит имя Джонни. Когда пользователь щелкает на его имя он будет говорить «Джонни баскетболом.
Вот как я пытаюсь сделать этот код
var ballRefrence = -1;
function createBall() {
ballRefrence +=1;
var myElement = document.createElement('div');
myElement.id = 'individualBall'+ballRefrence;
ballArea.appendChild(myElement);//ball area is where I want to list the divs
myElement.style.width = "550px";
myElement.innerHTML= userName+" has bought a ball!";
createEventListner();
}
function createEventListner() {
var iBall = document.getElementById("individualBall"+ballRefrence);
iball.addEventListener("click",showBall,false);
}
function playCaption() {
//I am not sure how to pull the individual up here.
//Since I am using the "BallRefrence"variable
//it will always be the last person clicked..
//(Basically I cannot say
//alert.(ballRefrence);
}
Я предполагаю, что я пытаюсь сказать это, я есть мой «BallRefrence», который каждый раз увеличивается на 1. Я храню все элементы в массиве (так что первый человек пойдет на индекс 0, второй пойдет на индекс 1 ... ect) У меня возникают проблемы с переопределением элемент, потому что я не уверен, как вытащить искомое число из div.
Пример: После 3 щелчков «создать шар» мой html будет выглядеть примерно так.
<div id = "individualBall0></div>
<div id = "individualBall1></div>
<div id = "individualBall2></div>
Поскольку каждый отдельный DIV будет совпадать с элементом в массиве Я хочу, Как сказать мою программу «При нажатии кнопки individualBall0, я хочу мяч [0] ..» или «, когда вы нажмите indivdualBall2, мне нужен мяч [2] "
Надеюсь, это имеет смысл.
И, что именно ваш вопрос? 'createBall()' похоже, что он должен вставить новый 'div', а затем' createEventListner() 'должен подключить обработчик событий для вновь созданного элемента (хотя есть намного более чистые способы написания кода). – jfriend00
@ Bergi - это была моя мысль при чтении названия, но код OP создает новый элемент, а затем назначает ему прослушиватель событий, поэтому я не думаю, что это проблема, которая требует делегированной обработки событий (хотя это может быть используется здесь). – jfriend00
@Bergi: Определенно соглашайтесь с предложением о закрытии, но я не уверен, что вопрос достаточно ясен, чтобы узнать, подходит ли предлагаемый дубликат (или закрытый голос). –