Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Инкремент индекса элемента массива или как создавать уникальные имена для переменных? (https://javascript.ru/forum/misc/57797-inkrement-indeksa-ehlementa-massiva-ili-kak-sozdavat-unikalnye-imena-dlya-peremennykh.html)

Blondinka 20.08.2015 00:42

Инкремент индекса элемента массива или как создавать уникальные имена для переменных?
 
Здравствуйте, хочу добавлять неограниченное количество контактов в массив. Вроде [["John", "john@gh.bn", "67696786"], ["Mary", "mary@jk.lp", "767896786"], ["Moe", "moe@hjh.hj", "7876867767"]] методом
contacts[i] = [name, email, telephone]; 
i++;

Как это можно решить? Есть вариант с использованием конструктора, но там та же проблема.
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
</head>

<body>
    <p id="demo"></p>
    <input type="text" name="name" />
    <input type="text" name="email" />
    <input type="text" name="telephone" />
    <input type="submit" value="submit" />
    <input type="submit" value="clear all" onclick="localStorage.clear();" />

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>
        var contacts = [],
            i = 0;
        $("input[type='submit']").click(function() { 
            var name = $('input[name="name"]').val(), //set user input to variables.
                email = $('input[name="email"]').val(),
                telephone = $('input[name="telephone"]').val();


                contacts[0] = [name, email, telephone];//Если эту строку заменить на contacts[i] = [name, email, telephone]; - результат будет null


            contacts[1] = ["Orlando", "orlando@jhk.com"];

            localStorage["contacts"] = JSON.stringify(contacts);
            alert(localStorage["contacts"]);
            var contactList = JSON.parse(localStorage["contacts"]);
            alert(contactList);
			
			for(var i = 0; i < localStorage.length; i++){
				$("body").append("<p>"+localStorage.key(i)+"="+localStorage.getItem(localStorage.key(i))+"</p>");				
            }
        });
    </script>

</body>

</html>

рони 20.08.2015 01:27

Цитата:

Сообщение от Blondinka
результат будет null

а вы сделай не i а k++ :)
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
</head>

<body>
    <p id="demo"></p>
    <input type="text" name="name" />
    <input type="text" name="email" />
    <input type="text" name="telephone" />
    <input type="submit" value="submit" />
    <input type="submit" value="clear all" onclick="localStorage.clear();" />

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>
        var contacts = [],
            k = 0;
        $("input[type='submit']").click(function() {
            var name = $('input[name="name"]').val(), //set user input to variables.
                email = $('input[name="email"]').val(),
                telephone = $('input[name="telephone"]').val();


                contacts[k++] = [name, email, telephone];//Если эту строку заменить на contacts[i] = [name, email, telephone]; - результат будет null


            //contacts[1] = ["Orlando", "orlando@jhk.com"];

            localStorage["contacts"] = JSON.stringify(contacts);
            alert(localStorage["contacts"]);
            var contactList = JSON.parse(localStorage["contacts"]);
            alert(contactList);

			for(var i = 0; i < localStorage.length; i++){
				$("body").append("<p>"+localStorage.key(i)+"="+localStorage.getItem(localStorage.key(i))+"</p>");
            }
        });
    </script>

</body>

</html>

Blondinka 20.08.2015 01:36

рони, спасибо огромное. Работает. Но почему?

ksa 20.08.2015 08:31

Цитата:

Сообщение от Blondinka
Но почему?

Это элементарно, Ватсон! (с) :D
Цитата:

Сообщение от Blondinka
for(*!*var i = 0;*/!* i < localStorage.length; i++){
   //
};

Кратенько тут...

рони 20.08.2015 08:43

ksa,
:thanks: спасибо что подсказали Blondinka,

ksa 20.08.2015 08:44

рони, подружка твоя? :)

Blondinka 20.08.2015 09:50

ksa, спасибо.


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