2015-08-18 3 views
-2

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

Если массив не существует, он создается автоматически в начале моего кода.

Тем не менее, я хотел бы создать новый массив каждый раз, когда пользователь вводит «новое» значение в поле ввода «префикс».

Можно ли это сделать?

function test(){ 
if(typeof uld === "undefined"){ 
    window.uld = []; 
} 

pre = document.getElementById("prefix").value.toUpperCase(); 
ser = document.getElementById("serial").value; 
suf = document.getElementById("suffix").value.toUpperCase(); 

nbrUld = uld.length + 1 

if (nbrUld == 1 || nbrUld % 5 == 1){ 
    uld.push(pre + "." + ser + suf); 
    uld2 = uld.join(''); 
} else if (nbrUld % 5 === 0){ 
    uld.push("/" + ser + suf + ".T" + "5\n"); 
    uld2 = uld.join(''); 
} else { 
    uld.push("/" + ser + suf); 
    uld2 = uld.join(''); 
} 
ttl = ".T" + nbrUld % 5; 
if (nbrUld % 5 === 0){ 
    document.getElementById("scm").value = uld2; 
} else { 
    document.getElementById("scm").value = uld2+ttl 
} 
} 
+1

Не имеет отношения к вопросу, но почему вы используете сокращения для имен переменных? Это делает ваш код довольно трудным для чтения. – Cerbrus

ответ

0

Вы можете преобразовать uld в объект, чтобы действовать как хэш. Если используется тот же префикс, массив будет заменен. просто используйте push, если это не то, что нужно приложению.

function test(){ 
    if(typeof uld === "undefined"){ 
     window.uld = {}; 
    } 

    pre = document.getElementById("prefix").value.toUpperCase(); 
    ser = document.getElementById("serial").value; 
    suf = document.getElementById("suffix").value.toUpperCase(); 

    var newArr = []; 
    uld[pre] = newArr; 

    nbrUld = newArr.length + 1 

    if (nbrUld == 1 || nbrUld % 5 == 1){ 
     newArr.push(pre + "." + ser + suf); 
     uld2 = newArr.join(''); 
    } else if (nbrUld % 5 === 0){ 
     newArr.push("/" + ser + suf + ".T" + "5\n"); 
     uld2 = uld.join(''); 
    } else { 
     newArr.push("/" + ser + suf); 
     uld2 = newArr.join(''); 
    } 
    ttl = ".T" + nbrUld % 5; 
    if (nbrUld % 5 === 0){ 
     document.getElementById("scm").value = uld2; 
    } else { 
     document.getElementById("scm").value = uld2+ttl 
    } 
} 
+0

Спасибо, что ответили Радио. Ваше решение дает ошибку в строке 14 «Uncaught TypeError: Can not read property« length »undefined» – Ethannn

+0

Я сделал редактирование, не уверен, почему вы это получили. – Radio

+0

Ошибка исчезла, но теперь код больше не работает. Мне нужно взглянуть на него. Спасибо за попытку! – Ethannn

Смежные вопросы