2016-12-05 27 views
-1

私はショッピングカート用のデータベースからデータを取得する次のJavaScriptを持っています。しかし、私はカートのデータを削除したいとき、私のコードは動作しません。 コードのこの部分にうまく収まっているかどうかわかりません。 javascript:deleteRow(this)Not working JavaScript function delete

listarPedido()と(下にある)deleteRow(r)の2つの機能の完全なコードを残します。

function listarPedido(){ 
    var articulos = localStorage.getItem("productos"); 
    var productos = articulos.split(";"); 
    var contador = 0;//cuenta numero de articulos en el carrito 

for(var i = 0; i < productos.length - 1; i++){ 
    var item = productos[i].split(","); 
    var pedido = ""; 

    for(var j = 0; j < item.length; j++){ 
     pedido = '<tr>'+ 
       '<td class="text-center">'+ '<img style="width: 100px; height: 100px" src="' + item[0] + '"/></td>' + 
       '<td id="celiminar" style="text-align:left;"><b>'+ item[1].toUpperCase() + '<br><br><br><br></b>' + 
       '<a style="text-decoration:none">Editar</a> | <a href="javascript:deleteRow(this)" style="text-decoration:none;">Delete</a></td>' + 
       '<td style="text-align:right; color:red"><b>'+ 'S/.'+ item[2] + '</b></td>' + 
       '<td class="text-center"><b>' 
       + '<input type="number" name="txtcant'+i+'" id="txtcant'+i+'" min="1" max="15" value="'+ item[3] +'" class="form-control">' + 
       '</b></td>'+ 
       '<td style="text-align:right;"><b>'+ 'S/.'+ (item[2]*item[3]).toFixed(2) + '</b></td>'; 
    } 
    //<a href="javascript:void()"><i class="fa fa-trash"></i></a> 
    $("#detallePedido").append(pedido); 

    $("#txtcant"+i).change(function(){ 
     resumen(); 
     //al cambiar el numero actualiza el total 
     $("#detallePedido tr").find("td").eq(4).html('<b>'+ 'S/.'+ (item[2] * $(this).val()).toFixed(2)+ '</b>'); 
    }); 

    contador++; 
} 

$("#lblnum").text(contador +" ARTÍCULOS"); 
} 

function deleteRow(r) { 
     var i = r.parentNode.parentNode.rowIndex; 
     document.getElementById(".table").deleteRow(i); 
    } 
+3

は "動作しない" を定義します。 –

+0

一方、 'document.getElementById("。table ")'を実行しますが、そこには参照はありません。また、あなたのHTMLには ''がありますが、 ''はありません。また、 'i'が正しい値であるかどうかを確認してください。 – Iluvatar

答えて

3

あなたのコードは、単に間違っている:

document.getElementById(".table").deleteRow(i); 

私はあなたが ".table" IDを持つ要素を持っている疑い。適切なテーブルを取得するために書き直さ

あなたの機能、:

function deleteRow(link) { 
    var row = link.parentNode.parentNode; 
    var idx = row.rowIndex; 
    var table = row.parentNode; 
    table.deleteRow(idx); 
} 
+0

ここで解決策を提供することができます: 'r.parentNode.parentNode.parentNode.deleteRow(r.parentNode.parentNode.rowIndex);' – somethinghere

+1

@somethinghere正しいです。それをクリーンアップし、コードを追加しました。 –

+2

あなたがクリーンアップしているので、私は引数 'r'を' cell'にリネームしますが、それはちょうど私です:)あなたの他の変数とうまく一致します! – somethinghere