Frage

Ich habe diesen Code, der Text aus einer Web -SQL -Datenbank anzeigt:

<span contenteditable="true" 
    onkeyup="updateRecord('+item['id']+', this)">' + item['product'] + '</span>

Wenn ich den Text bearbeite, ruft er die Funktion "UpdateRecord" auf und aktualisiert den Wert.

  function updateRecord(id, textEl) {
    db.transaction(function(tx) {
      tx.executeSql("UPDATE products SET product = ? WHERE id = ?", 
          [textEl.innerHTML, id], null, onError);
    });
  }

Ich habe jedoch einige dieser Werte, mit denen ich arbeiten möchte. Ich möchte also die Spalte angeben. Der obige Code funktioniert, wenn ich die Spalte auf festgelegt habe Produkt In der Funktion versuche ich im folgenden Code, einen zusätzlichen Parameter an die Funktion zu senden, aber es funktioniert nicht. Was mache ich hier falsch?

  <span contenteditable="true" 
        onkeyup="updateRecord('+item['id']+', 'product', this)">'+ item['product'] + '</span>

  function updateRecord(id, column, textEl) {
    db.transaction(function(tx) {
      tx.executeSql("UPDATE products SET ? = ? WHERE id = ?", 
          [column, textEl.innerHTML, id], null, onError);
    });
  }
War es hilfreich?

Lösung

Gleiches gilt für alle DBMs mit vollem Körper, Sie können die Spaltennamen nicht parametrisieren, nur Werte. Sie müssen es also so machen

  <span contenteditable="true" 
        onkeyup="updateRecord('+item['id']+', 'product', this)">'+ item['product'] + '</span>

  function updateRecord(id, column, textEl) {
    db.transaction(function(tx) {
      tx.executeSql("UPDATE products SET " + column + " = ? WHERE id = ?", 
          [column, textEl.innerHTML, id], null, onError);
    });
  }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top