Создать функцию для события
Я хочу генерировать функции для события с помощью цикла. Конечно, в приведенном ниже примере, при нажатии кнопки, она будет давать значение 100, а не 1.
<body>
<button id="b1">klickMeNow</button>
<script>
var i=1;
document.getElementById("b1").addEventListener("click", function() { alert(i);}, false);
var i=100;
</script>
</body>
Я пришел с этим решением, используя функцию генерации:
<button id="b1">klickMeNow</button>
<script>
var i=1;
document.getElementById("b1").addEventListener("click", generate(i), false);
var i=100;
function generate(i1) {
f = function () {alert(i1);};
return f;
}
</script>
Есть ли более элегантное решение без написания функции генерации?
2 ответа
Извините за путаницу. Если вы запускаете первый фрагмент, он дает 100 в результате, но я хочу, чтобы он печатал 1, фактическое значение, когда я связываю функцию.
Вы ищете простую функцию подсчета?
var count = (function() {
var c = 0;
return function() {
return ++c;
}
}());
document.getElementById('b1').onclick = function() {
alert(count());
}
<button id="b1">Click Me</button>