Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Переменная "на лету" (https://javascript.ru/forum/jquery/25798-peremennaya-na-letu.html)

kixik 15.02.2012 18:45

Переменная "на лету"
 
Приветствую,

сразу к делу:

выбираю имена всех чекбоксов, которые отмечены:

$("#tut-ishu").find($("input[type=checkbox]:checked").each(function()
    {    
        var name = $(this).attr("name"); // все имена
        alert(name);     
            }));


- это всё хорошо, и выводит, то что надо к примеру отмечено два чекбокса и получается два алерта с именами (к примеру chek1 и chek2).

а я хочу выводилось содержание ранее уже объявленных переменных как раз таки с именами chek1 и chek2.

var chek1 = 'Первая';
var chek2 = 'Вторая';
$("#tut-ishu").find($("input[type=checkbox]:checked").each(function()
    {    
        var name = $(this).attr("name"); // все имена
        alert(name);     
            }));


если вместо name в alert ставлю имя переменной, то выводит что надо, а если в цикле - не хочет (( выводит имя чекбокса...

благодарю за советы

B@rmaley.e><e 15.02.2012 19:27

alert(window[name])
, если переменные объявлены в глобальной области видимости.

kixik 15.02.2012 19:44

попробовал... undefined :( в глобальной видимости, если скажем сделать так:

var chek1 = 'Первая';
var chek2 = 'Вторая';
$("#tut-ishu").find($("input[type=checkbox]:checked").each(function()
    {    
        var name = $(this).attr("name"); // все имена
        alert(window[name]+'/'+chek2);     
            }));

результатом будет undefined/Вторая

T-sh 15.02.2012 20:39

перед перебором чекбоксов создавай массив:

var arrCb = $([]);


в цикле перебора вместо var name... добавляй все в массив:
arrCb.add($(this).attr("name"));

на выходе: arrCb — массив со всеми именами.

B@rmaley.e><e 15.02.2012 22:50

<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<div id="tut-ishu"> <input name="chek1" type="checkbox" /> <input name="chek2" type="checkbox" />
<input type="button" id="btn" value="ClickMe!" />
</div>
<script>
var chek1 = 'Первая';
var chek2 = 'Вторая';
$('#btn').click(function () {
	$("#tut-ishu").find($("input[type=checkbox]:checked").each(function () {
		var name = $(this).attr("name"); // все имена
		alert(window[name]);
	}));
});</script>


P.S. find Вы используете неправильно.


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