Вы вызываете функцию test()
и передаете ее возвращаемое значение в .addEventListener()
.Снимите скобки:
entry.addEventListener("click", test, false);
, чтобы вы передали саму функцию .addEventListener()
.
, которая отвечает на поставленный вопрос, но для того, чтобы предугадать вашу следующую проблему для строки, которую вы 'мы закомментировали, что вы сделаете следующее:
entry.addEventListener("click",
function() {
idSearch(jsonObj.response.artists[i].id);
}, false);
То есть создайте анонимную функцию для передачи в .addEventListener()
, где анонимная функция знает, как вызвать вашу функцию idSearch()
с параметрами.За исключением того, что это не сработает, потому что когда событие на самом деле запущено, i
будет иметь значение с конца цикла.Вам нужно добавить дополнительную функцию / замыкание, чтобы были доступны отдельные значения i
:
for ( var i = 0; i < length; i++)
{
var entry = document.createElement("div");
var field = document.createElement("fieldset");
entry.id = i;
entry.innerHTML = i + 1 + ". " + jsonObj.response.artists[i].name;
field.appendChild(entry);
results.appendChild(field);
// add immediately-invoked anonymous function here:
(function(i) {
entry.addEventListener("click",
function() {
idSearch(jsonObj.response.artists[i].id);
}, false);
})(i);
}
Таким образом, i
в jsonObj.response.artists[i].id
фактически будет параметром i
от анонимной функции, которая является индивидуальным значением i
из цикла во время выполнения каждой итерации.