Передать значение в функцию
Как получить тоже самое, но без 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, время: 19:37. |