Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.08.2015, 00:42
Профессор
Отправить личное сообщение для Blondinka Посмотреть профиль Найти все сообщения от Blondinka
 
Регистрация: 21.03.2014
Сообщений: 173

Инкремент индекса элемента массива или как создавать уникальные имена для переменных?
Здравствуйте, хочу добавлять неограниченное количество контактов в массив. Вроде [["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>
Ответить с цитированием
  #2 (permalink)  
Старый 20.08.2015, 01:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,069

Сообщение от 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>
Ответить с цитированием
  #3 (permalink)  
Старый 20.08.2015, 01:36
Профессор
Отправить личное сообщение для Blondinka Посмотреть профиль Найти все сообщения от Blondinka
 
Регистрация: 21.03.2014
Сообщений: 173

рони, спасибо огромное. Работает. Но почему?
Ответить с цитированием
  #4 (permalink)  
Старый 20.08.2015, 08:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Blondinka
Но почему?
Это элементарно, Ватсон! (с)
Сообщение от Blondinka
for(*!*var i = 0;*/!* i < localStorage.length; i++){
   //
};
Кратенько тут...

Последний раз редактировалось ksa, 20.08.2015 в 08:46.
Ответить с цитированием
  #5 (permalink)  
Старый 20.08.2015, 08:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,069

ksa,
спасибо что подсказали Blondinka,
Ответить с цитированием
  #6 (permalink)  
Старый 20.08.2015, 08:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

рони, подружка твоя?
Ответить с цитированием
  #7 (permalink)  
Старый 20.08.2015, 09:50
Профессор
Отправить личное сообщение для Blondinka Посмотреть профиль Найти все сообщения от Blondinka
 
Регистрация: 21.03.2014
Сообщений: 173

ksa, спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
как получить offsetHeight для элемента с display:none cyber Events/DOM/Window 4 01.06.2012 19:19
Дебаг js, или как найти обработчик события для тега jimm88 Events/DOM/Window 1 18.04.2012 15:11
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53