2016-03-30 7 views
0

Ich bin neu in JavaScript und ich lerne immer noch. So habe ich ein Objekt mit Autos:Update-Betrieb in Javascript

var cars = [ 
    { 
     image:'http://superbvehicles.com/wp-content/uploads/2015/10/Nissan-GTR-3.jpg', 
     name:'nissan', 
     model:'gtr', 
     hp:565, 
     price:100.000, 
    }, 
    { 
     image:'http://bestcarmag.com/sites/default/files/4700070mitsubishi-lancer-06.jpg', 
     name:'mitsubishi', 
     model:'lancer', 
     hp:380, 
     price:40.000, 
    }, 
    { 
     image:'http://bestcarmag.com/sites/default/files/2048005subaru-impreza-wrx-sti-01.jpg', 
     name:'subaru', 
     model:'impreza', 
     hp:400, 
     price:50.000 
    }, 
    { 
     image:'http://stancewords.stanceworks.netdna-cdn.com/wp-content/uploads/2012/06/datsun-240z-slammed-red.jpg', 
     name:'nissan', 
     model:'fairlady 240z', 
     hp:200, 
     price:70.000 
    }, 
    { 
     image:'https://s-media-cache-ak0.pinimg.com/736x/35/be/6b/35be6b46846e893d332ddfef989614fe.jpg', 
     name:'nissan', 
     model:'skyline', 
     hp:320, 
     price:80.000 
    } 
] 

und eine HTML-Tabelle, die mit den Informationen aus diesem Objekt gefüllt ist. Ich habe für jede Zeile in der Tabelle die Schaltfläche "Bearbeiten" erstellt und wenn Sie sie drücken, werden die Informationen für die Zeile übernommen und in ein Formular eingefügt, damit der Benutzer sie bearbeiten kann. Dies ist die Funktion, die das tut:

function editCar(i){ 
    var image = cars[i].image; 
    var name = cars[i].name; 
    var model = cars[i].model; 
    var hp = cars[i].hp; 
    var price = cars[i].price; 

    $('#image-edit').val(image); 
    $('#name-edit').val(name); 
    $('#model-edit').val(model); 
    $('#hp-edit').val(hp); 
    $('#price-edit').val(price); 

    var newImage = $('#image-edit').val(); 
    var newName = $('#name-edit').val(); 
    var newModel = $('#model-edit').val(); 
    var newHp = $('#hp-edit').val(); 
    var newPrice = $('#price-edit').val(); 


}; 

Also meine Frage ist, wie kann ich die neuen Informationen (vom Benutzer in Form) in das Objekt an der Stelle des alten einfügen?

P.S. Entschuldigung, wenn mein Englisch schlecht ist.

+0

Sie können 'index' (' I') .. – Rayon

+0

Sie können das Objekt nicht aktualisiert werden für lange Zeit mit. es wird nur zur Laufzeit funktionieren. Sie können jedoch einen Ajax-Aufruf ausführen, um die neuen Formulardaten auf einer Seite zu speichern und das alte Objekt daraus zu erstellen. –

Antwort

2

Erstens wäre es am besten, den Index irgendwo zu speichern, damit Sie wissen, welchen Index Sie durch neue Daten ersetzen möchten, und er muss irgendwo gespeichert werden, wo alle unsere eigenen Funktionen ihn teilen können - in diesem Fall Wir werden es im globalen Kontext definieren. Dann alles, was Sie tun müssen, ist, überschreiben sie auf Formular Vorlage:

// Initialise as -1 so we can check that no index is selected 
var currentIndex = -1; 

function editCar(i){ 
    // Set the global variable to this index so we can use it in other functions 
    currentIndex = i; 
    ... 
} 

// I am assuming your form is wrapped in <form id="form"></form> 
$("#form").on("submit", function(event){ 
    // Without preventDefault, the page might get reloaded and therefor reset 
    event.preventDefault(); 
    // This is for safety, to make sure there is an index 
    if(currentIndex >= 0){ 
     cars[currentIndex].image = $('#image-edit').val(); 
     cars[currentIndex].name = $('#name-edit').val(); 
     cars[currentIndex].model = $('#model-edit').val(); 
     cars[currentIndex].hp = $('#hp-edit').val(); 
     cars[currentIndex].price = $('#price-edit').val(); 
    } 
});