Добавить слушателя к div в цикле

129
21 сентября 2019, 23:10

Хочу отобразить онлайн,оффлайн пользователей чата и приписать определенную логику при нажатии на одного из такого пользователя(div). Есть JSONArray,читаю циклом по очереди JSONObject вот таким образом :

socket.onmessage = function(evt){
var json = JSON.parse(evt.data);
var online = json.Online;
var offline = json.Offline;
    for(var i = 0 ; i < online.length ; i++){
        var current = online[i];
        var div = document.createElement("div");
        var p = document.createElement("p");
        p.innerHTML = current.login;
        div.appendChild(p);
        document.getElementById("People").appendChild(div);
        div.addEventListener("click" , dialog(div));
    }
}   
function dialog(div){
    alert("I am here");
    div.style.background = "blue";
    div.style.height = "50px";
    div.style.width = "100px";
}

Хочу,чтобы при нажатии на один из div,срабатывала функция dialog и в нее передавался этот div,на который было нажатие.

Вся проблема в том,что у меня срабатывает слушатель без моего нажатия.Когда я прогрузил страницу и JSONArray пришел,у меня срабатывает dialog() и я вижу alert.

Answer 1
div.addEventListener("click" , dialog);
...
function dialog(){
    alert("I am here");
    this.style.background = "blue";
    this.style.height = "50px";
    this.style.width = "100px";
}
READ ALSO
можно ли сделать сменяющийся статус без js?

можно ли сделать сменяющийся статус без js?

вот есть js, который позволяет менять строку на какую-то другую строку, а можно достичь таких же успехов на css?

92
пару вопросов по решению к задаче [дубликат]

пару вопросов по решению к задаче [дубликат]

На данный вопрос уже ответили:

101
&ldquo;Route.post() requires a callback function but got a Object&rdquo; при использовании multer

“Route.post() requires a callback function but got a Object” при использовании multer

При вызове маршрута: routerpost('/', upload, controller

108
Как получить дату в ISO формате?

Как получить дату в ISO формате?

Подскажите, как переформанировать дату публикации получаемую с сервера в ISO формат

67