2011-02-01 58 views
0

我有這樣的代碼從一個Web SQL數據庫顯示文本:如何向功能發送附加參數?

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

當我編輯調用updateRecord功能,更新值的文本。

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

我有幾個這些值,但我嘗試使用。所以我想指定列。上面的代碼工程,如果我設置列產品在函數中,在下面的代碼中,我試圖發送一個額外的參數給函數,但它不工作。我在這裏做錯了什麼?

<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); 
    }); 
    } 

回答

1

與任何完整的DBMS一樣,您不能參數化列名稱,僅限值。 所以你需要這樣做

<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); 
    }); 
    } 
+0

謝謝,這解決了問題的一部分。我沒有包含足夠的信息,但我仍然可以看到語法錯誤。 – Roger 2011-02-02 00:19:27