Передать значение в функцию
Как получить тоже самое, но без eval?
<body>
<script>
var mas = ['text0', 'text1', 'text2'];
var len = mas.length;
for (var i = 0; i < len; i++) {
but = document.createElement('button');
var str = 'but.onclick = function () {\
alert("' + mas[i] + '");\
}';
eval(str);
but.innerHTML = 'but' + i;
document.body.appendChild(but);
}
</script>
|
Ну можно например так:
<body>
<script type="text/javascript">
var mas = ['text0', 'text1', 'text2'];
for(var i in mas){
var but = document.createElement('button');
(function(i){but.onclick = function(){alert(mas[i])}})(i)
but.innerHTML = 'but' + i;
document.body.appendChild(but);
}
</script>
</body>
|
Цитата:
например, значит есть ещё варианты? |
Ну можно вообще извращаться по всякому:)
например так:
<body>
<script type="text/javascript">
var mas = ['text0', 'text1', 'text2'];
Array.prototype.createButton = function(i){
var but = document.createElement('button') , a = this;
var func = function(){alert(a[i])};
but.onclick = func;
but.innerHTML = 'but' + i;
document.body.appendChild(but);
}
for(var i = 0; i < mas.length; i++) mas.createButton(i);
</script>
</body>
или по тупому сделать функцию:
<body>
<script type="text/javascript">
var mas = ['text0', 'text1', 'text2'];
function createButton(arr, i){
var but = document.createElement('button');
var func = function(){alert(arr[i])};
but.onclick = func;
but.innerHTML = 'but' + i;
document.body.appendChild(but);
}
for(var i = 0; i < mas.length; i++) createButton(mas, i);
</script>
</body>
|
да, понял мысль, спасибо :thanks:
|
|
| Часовой пояс GMT +3, время: 14:37. |