我有一个由javascript数组创建的对象表,我需要每行的按钮将行复制到另一个数组。
我试图创建一个空数组和一个名为onclick的函数,以从数组中获取行,但没有成功。
var livres = [
{ref:'b0124', auteur: 'B.Y.', titre: 'Connectique', prix : 5.20},
{ref:'b0254', auteur: 'L.Ch.', titre: 'Programmation C', prix : 4.75},
{ref: 'b0334', auteur: 'L.Ch.', titre: 'JavaScript', prix : 6.40},
{ref: 'b0250', auteur: 'D.A.', titre: 'Mathématiques', prix : 6.10},
{ref: 'b0604' , auteur: 'V.V.', titre: 'Objets', prix : 4.95},
{ref: 'b0025' , auteur: 'D.M.', titre: 'Electricité', prix : 7.15},
{ref: 'b0099' , auteur: 'D.M.', titre: 'Phénomènes Périodiques', prix : 6.95},
{ref: 'b0023' ,auteur: 'V.MN.', titre: 'Programmation Java', prix : 5.75},
{ref: 'b0100' , auteur: 'D.Y.', titre: 'Bases de Données', prix : 6.35},
{ref: 'b0147' , auteur: 'V.V.', titre: 'Traitement de Signal', prix : 4.85},
{ref: 'b0004' , auteur: 'B.W.', titre: 'Sécurité', prix : 5.55},
{ref: 'b0074' , auteur: 'B.Y.', titre: 'Electronique digitale', prix : 4.35},
{ref: 'b0257' ,auteur: 'D.Y.', titre: 'Programmation Multimedia', prix : 6.00}
]
function afficherCatalogue(livres){ // afficher le catalogue
var ligne;
var ligne2;
for(var i in livres) { // pour chaque ligne du catalogue
ligne = '<tr>';
ligne += '<td class=ref>' + livres[i].ref + '</td>'; // reference
ligne += '<td class=aut>' + livres[i].auteur + '</td>'; // auteur
ligne += '<td class=tit>' + livres[i].titre + '</td>'; // titre
ligne += '<td class=prx>' + livres[i].prix + '</td>'; // prix
ligne += '<td class=ach>' + '<button type="button" onclick="add(i)">acheter</button>' + '</td>'; // futur bouton d'achat
ligne += '</tr>';
function add(i){
ligne2 = '<tr>';
ligne2 += '<td class=ref>' + livres[i].ref + '</td>'; // reference
ligne2 += '<td class=aut>' + livres[i].auteur + '</td>'; // auteur
ligne2 += '<td class=tit>' + livres[i].titre + '</td>'; // titre
ligne2 += '<td class=prx>' + livres[i].prix + '</td>'; // prix
ligne2 += '</tr>';
}
document.getElementById('tbc').innerHTML += ligne;
document.getElementById('tba').innerHTML += ligne2;
}
}
<body id=tbc></tbody> //first table already created
<tbody id=tba><!-- table that get the line from the first table --></tbody>
答案 0 :(得分:0)
您的代码(至少您在此处的副本)非常混乱。
虽然行得通,但仍然可行:
document.getElementById('tba').innerHTML += ligne2;
在add
函数内部,如下所示:
function add(i){
ligne2 = '<tr>';
ligne2 += '<td class=ref>' + livres[i].ref + '</td>'; // reference
ligne2 += '<td class=aut>' + livres[i].auteur + '</td>'; // auteur
ligne2 += '<td class=tit>' + livres[i].titre + '</td>'; // titre
ligne2 += '<td class=prx>' + livres[i].prix + '</td>'; // prix
ligne2 += '</tr>';
document.getElementById('tba').innerHTML += ligne2;
}
希望不久后可以在线查看您的图书馆系统。
编辑: 完整的代码如下:
var livres = [
{ref: 'b0124', auteur: 'B.Y.', titre: 'Connectique', prix: 5.20},
{ref: 'b0254', auteur: 'L.Ch.', titre: 'Programmation C', prix: 4.75},
{ref: 'b0334', auteur: 'L.Ch.', titre: 'JavaScript', prix: 6.40},
{ref: 'b0250', auteur: 'D.A.', titre: 'Mathématiques', prix: 6.10},
{ref: 'b0604', auteur: 'V.V.', titre: 'Objets', prix: 4.95},
{ref: 'b0025', auteur: 'D.M.', titre: 'Electricité', prix: 7.15},
{ref: 'b0099', auteur: 'D.M.', titre: 'Phénomènes Périodiques', prix: 6.95},
{ref: 'b0023', auteur: 'V.MN.', titre: 'Programmation Java', prix: 5.75},
{ref: 'b0100', auteur: 'D.Y.', titre: 'Bases de Données', prix: 6.35},
{ref: 'b0147', auteur: 'V.V.', titre: 'Traitement de Signal', prix: 4.85},
{ref: 'b0004', auteur: 'B.W.', titre: 'Sécurité', prix: 5.55},
{ref: 'b0074', auteur: 'B.Y.', titre: 'Electronique digitale', prix: 4.35},
{ref: 'b0257', auteur: 'D.Y.', titre: 'Programmation Multimedia', prix: 6.00}
];
function afficherCatalogue(livres) { // afficher le catalogue
var ligne;
for(var i in livres) { // pour chaque ligne du catalogue
ligne = '<tr>';
ligne += '<td class=ref>' + livres[i].ref + '</td>'; // reference
ligne += '<td class=aut>' + livres[i].auteur + '</td>'; // auteur
ligne += '<td class=tit>' + livres[i].titre + '</td>'; // titre
ligne += '<td class=prx>' + livres[i].prix + '</td>'; // prix
ligne += '<td class=ach><button type="button" onclick="addLivre(' + i + ')">acheter</button></td>'; // futur bouton d'achat
ligne += '</tr>';
document.getElementById('tbc').innerHTML += ligne;
}
}
function addLivre(i) {
var ligne2;
ligne2 = '<tr>';
ligne2 += '<td class=ref>' + livres[i].ref + '</td>'; // reference
ligne2 += '<td class=aut>' + livres[i].auteur + '</td>'; // auteur
ligne2 += '<td class=tit>' + livres[i].titre + '</td>'; // titre
ligne2 += '<td class=prx>' + livres[i].prix + '</td>'; // prix
ligne2 += '</tr>';
document.getElementById('tba').innerHTML += ligne2;
}
答案 1 :(得分:0)
我希望它会有所帮助。在您的foreach循环中,您覆盖了您的值
var livres = [
{ref:'b0124', auteur: 'B.Y.', titre: 'Connectique', prix : 5.20},
{ref:'b0254', auteur: 'L.Ch.', titre: 'Programmation C', prix : 4.75},
{ref: 'b0334', auteur: 'L.Ch.', titre: 'JavaScript', prix : 6.40},
{ref: 'b0250', auteur: 'D.A.', titre: 'Mathématiques', prix : 6.10},
{ref: 'b0604' , auteur: 'V.V.', titre: 'Objets', prix : 4.95},
{ref: 'b0025' , auteur: 'D.M.', titre: 'Electricité', prix : 7.15},
{ref: 'b0099' , auteur: 'D.M.', titre: 'Phénomènes Périodiques', prix : 6.95},
{ref: 'b0023' ,auteur: 'V.MN.', titre: 'Programmation Java', prix : 5.75},
{ref: 'b0100' , auteur: 'D.Y.', titre: 'Bases de Données', prix : 6.35},
{ref: 'b0147' , auteur: 'V.V.', titre: 'Traitement de Signal', prix : 4.85},
{ref: 'b0004' , auteur: 'B.W.', titre: 'Sécurité', prix : 5.55},
{ref: 'b0074' , auteur: 'B.Y.', titre: 'Electronique digitale', prix : 4.35},
{ref: 'b0257' ,auteur: 'D.Y.', titre: 'Programmation Multimedia', prix : 6.00}
]
afficherCatalogue(livres);
function afficherCatalogue(livres){ // afficher le catalogue
var ligne;
var ligne2;
for(var i in livres) { // pour chaque ligne du catalogue
ligne += '<tr>';
ligne += '<td class=ref>' + livres[i].ref + '</td>'; // reference
ligne += '<td class=aut>' + livres[i].auteur + '</td>'; // auteur
ligne += '<td class=tit>' + livres[i].titre + '</td>'; // titre
ligne += '<td class=prx>' + livres[i].prix + '</td>'; // prix
ligne += '<td class=ach>' + '<button type="button" onclick="add(i)">acheter</button>' + '</td>'; // futur bouton d'achat
ligne += '</tr>';
ligne2 += '<tr>';
ligne2 += '<td class=ref>' + livres[i].ref + '</td>'; // reference
ligne2 += '<td class=aut>' + livres[i].auteur + '</td>'; // auteur
ligne2 += '<td class=tit>' + livres[i].titre + '</td>'; // titre
ligne2 += '<td class=prx>' + livres[i].prix + '</td>'; // prix
ligne2 += '</tr>';
}
document.getElementById('tbc').innerHTML = ligne;
document.getElementById('tba').innerHTML = ligne2;
}
<table id="tbc"></table>
<table id="tba"></table>
答案 2 :(得分:0)
您可以将id添加到每一行,并在add()函数中获取按钮单击的位置。您可以通过add()函数存储该数据
var constlivres = [
{ ref: 'b0124', auteur: 'B.Y.', titre: 'Connectique', prix: 5.20 },
{ ref: 'b0254', auteur: 'L.Ch.', titre: 'Programmation C', prix: 4.75 },
{ ref: 'b0334', auteur: 'L.Ch.', titre: 'JavaScript', prix: 6.40 },
{ ref: 'b0250', auteur: 'D.A.', titre: 'Mathématiques', prix: 6.10 },
{ ref: 'b0604', auteur: 'V.V.', titre: 'Objets', prix: 4.95 },
{ ref: 'b0025', auteur: 'D.M.', titre: 'Electricité', prix: 7.15 },
{ ref: 'b0099', auteur: 'D.M.', titre: 'Phénomènes Périodiques', prix: 6.95 },
{ ref: 'b0023', auteur: 'V.MN.', titre: 'Programmation Java', prix: 5.75 },
{ ref: 'b0100', auteur: 'D.Y.', titre: 'Bases de Données', prix: 6.35 },
{ ref: 'b0147', auteur: 'V.V.', titre: 'Traitement de Signal', prix: 4.85 },
{ ref: 'b0004', auteur: 'B.W.', titre: 'Sécurité', prix: 5.55 },
{ ref: 'b0074', auteur: 'B.Y.', titre: 'Electronique digitale', prix: 4.35 },
{ ref: 'b0257', auteur: 'D.Y.', titre: 'Programmation Multimedia', prix: 6.00 }
]
function afficherCatalogue(livres) { // afficher le catalogue
var ligne;
var ligne2;
for (var i = 0, l = livres.length; i < l; i++) { // pour chaque ligne du catalogue
ligne = '<tr id="row-'+ i +'">';
ligne += '<td class=ref>' + livres[i].ref + '</td>'; // reference
ligne += '<td class=aut>' + livres[i].auteur + '</td>'; // auteur
ligne += '<td class=tit>' + livres[i].titre + '</td>'; // titre
ligne += '<td class=prx>' + livres[i].prix + '</td>'; // prix
ligne += '<td class=ach><button type="button" onclick="add('+ i +')">copy</button></td>'; // futur bouton d'achat
ligne += '</tr>';
document.getElementById('tbc').innerHTML += ligne;
}
}
function add(location){
console.log('location ---> ', location, document.getElementById('row-' + location));
}
afficherCatalogue(constlivres);