2017-01-14 3 views
0

Я написал эту пьесу с ожиданием сохранения имени и оценки в каждом элементе массива.Javascript array return "a"?

Ожидаемый результат:

var students = [ 
    ['David', 80], 
    ['Dane', 77], 
    ['Dick', 88], 
    ['Donald', 95], 
    ['Dean', 68] 
    ]; 

Однако я натыкаюсь на присвоение второго значения в элементе массива ... В codepen.io, возвращенное значение «а».

HTML:

name: <input type="text" id="namebox"><br><br> 
score: <input type="text" id="scorebox"><br><br> 

<input type="button" value="Add" onclick="addStudent()"> 

<input type="button" value="Display" onclick="displayArray()"> 

Javascript:

var x = 0; 
var students = []; 

function addStudent(){ 
    students[x] = document.getElementById("namebox").value; 
    students[x][1] = document.getElementById("scorebox").value; 
    alert(students[x] + " added"); 
    x++; 
    document.getElementById("namebox").value = ""; 
    document.getElementById("scorebox").value = ""; 
    document.getElementById("namebox").focus(); 
    document.getElementById("scorebox").focus(); 
} 

function displayArray(){ 
    var e = "<hr>"; 

    for (y = 0; y < students.length; y++) 
    { 
     e += students[y] + students[y][1] + "<br>"; 
    } 
    document.getElementById("result").innerHTML = e; 
} 
+0

ученики [x] [0] = document.getElementById ("имя-ящик"). Значение; –

ответ

1

как это было предложено @ Y.C. если вы добавите students[x][0] = document.getElementById("namebox").value;, ваш код будет работать. Я хочу предложить небольшую модификацию, чтобы ваш json-массив сохранял свой «шаблон». Включите document.getElementById("scorebox").value в parseInt(), чтобы получить оценку в виде числа. Другими слова просто написать parseInt(document.getElementById("scorebox").value);

UPDATE

, так как мое предыдущее предложение работает только если вы предопределить массив я Editted код, так что теперь это должно работать.

вместо присвоения значения каждой ячейки я толчок() функцию, так что теперь метод addStudent выглядит следующим образом:

function addStudent(){ 
    students.push(document.getElementById("namebox").value, parseInt(document.getElementById("scorebox").value)); 
alert(students[x] + " added"); 
x++; 
document.getElementById("namebox").value = "".focus(); 
document.getElementById("scorebox").value = "".focus(); 
document.getElementById("namebox").focus(); 
document.getElementById("scorebox").focus(); 
} 

UPDATE # 2

мое последнее обновление было только для addStudent работать, поскольку я думал, что это проблема. Так что теперь вся эта вещь должна работать, следуя инструкции ниже:

на вашем HTML добавить DIV с результатом ид, потому что кажется, что вы забыли

<div id="result"></div> 

на вашем Javascript просто скопировать и вставить следующий код

var x = 0; 
var students = []; 

    function addStudent(){ 
     students.push([document.getElementById("namebox").value, parseInt(document.getElementById("scorebox").value)]); 
    alert(students[x] + " added"); 
    x++; 
    document.getElementById("namebox").value = "".focus(); 
    document.getElementById("scorebox").value = "".focus(); 
    document.getElementById("namebox").focus(); 
    document.getElementById("scorebox").focus(); 
    } 

    function displayArray(){ 
    var e = "<hr>"; 

    for (y = 0; y < students.length; y++) 
    { 
    e += students[y][0] + "&nbsp;" + students[y][1] + "<br>"; 
    } 
    document.getElementById("result").innerHTML = e; 
    } 

Обратите внимание, что я изменил функцию addStudent немного просто добавить каждый студент как отдельный массив состояло из его/ее имени и его/ее счет.

+0

Я тестировал, но это не сработает = ( –

+0

@AhQuan взгляните на мой кодфель, он работает, если я полностью не понял вашу проблему http://codepen.io/anon/pen/rjLPLB?editors=1111 – catchiecop

+1

ya потому что u предопределил массив уже, если он создан пустым, вставка не будет работать = ( –

1

сделать что-то вроде этого

function addStudent(){ 
    var studentArray = [], 
     tempArray = [], 
     index= 0; 

    tempArray[0] = document.getElementById("namebox").value; // David 
    tempArray[1] = document.getElementById("scorebox").value; //80 

    // this will insert array into main array. 
    studentArray.push(tempArray); // [['David', 80]] 

    // rest of your code 

    return studentArray; 
    } 
+0

спасибо! Я попробую! –