Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передать значение в функцию (https://javascript.ru/forum/misc/32476-peredat-znachenie-v-funkciyu.html)

bes 17.10.2012 15:26

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

Skipp 17.10.2012 16:07

Ну можно например так:
<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>

bes 17.10.2012 16:16

Цитата:

Сообщение от Skipp
Ну можно например так:

гуд :)
например, значит есть ещё варианты?

Skipp 17.10.2012 16:23

Ну можно вообще извращаться по всякому:)
например так:
<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>

bes 17.10.2012 16:30

да, понял мысль, спасибо :thanks:

nerv_ 18.10.2012 21:34

http://learn.javascript.ru/closures-usage
http://learn.javascript.ru/task/armiya-funkcij


Часовой пояс GMT +3, время: 19:37.