Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Как узнать ключи массива?


Автор: maxipub 27.11.2013, 15:23
Добрый день!

Перебираю элементы формы для их обработки в цикле:

Код

current = MyForm.elements[n];


В форме идут поля с массивами вида:

Код

array[first][second]


Как можно узнать текущие ключи массива (first и second) для каждого current?  smile  smile  smile 

Автор: Sanchezzz 28.11.2013, 08:12
Код

var a = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5];
alert(a.indexOf(3));      // 2
alert(a.lastIndexOf(3));  // 7


не ? 

Автор: maxipub 28.11.2013, 15:25
Видел такой пример. Я что-то не так делаю? smile 

Код

<script type="text/javascript">
function clicked() {
    MyForm = document.getElementById('MyForm');
    for (n = 0; n < MyForm.length; ++n) {
        current = MyForm.elements[n];
        alert(current.IndexOf(current.value)); }
}
</script>

<input type="button" value="click me!" onclick="clicked()" />

<form id="MyForm">
<input type="text" name="array[first_1][second_1]" value="123" />
<input type="text" name="array[first_2][second_3]" value="456" />
<input type="text" name="array[first_2][second_3]" value="789" />
</form>

Автор: ksnk 28.11.2013, 15:43
Это не ключи массива. C точки зрения JavaScript, это просто такое забавное значение атрибута name. В ключи массива переводит PHP.

Код

function clicked () {
    var MyForm = document.getElementById('MyForm');
    for (var n = 0; n < MyForm.length; ++n) {
        var current = MyForm.elements[n],m,
             name=current.getAttribute('name');    
        if(m=name.match(/\[(.*?)\]\[(.*?)\]/)){
           console.log(m[1],m[2]);
        }
    }
}

Может так? 

Автор: maxipub 28.11.2013, 16:06
ksnk, уже понятней в каком направлении в принципе рыть (у меня код не совсем корректно работает). Спасибо.

К счастью, проблему удалось решить вчера другим способом, но для общего развития сойдет.

Автор: baldina 28.11.2013, 16:53
в чем некорректность?

Добавлено @ 16:54
http://jsfiddle.net/QGW6a/

Автор: maxipub 29.11.2013, 09:14
baldina, ваш пример работает. То что выше выдает то что на скрине.

Автор: baldina 29.11.2013, 09:27
в моем примере, в отличие от ваших данных, значения атрибута name не повторяются

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)