openDatabase Hello World - 2

时间:2010-03-26 20:19:53

标签: javascript jquery opendatabase

这是previous stackoverflow问题的延续。 我已经重命名了一些变量,以便告诉我什么是关键字以及我可以控制的名称。

问:为什么deleteRow功能不起作用?

<html>
<head>
<title>html5 openDatabase Hello World</title>
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1");
google.setOnLoadCallback(OnLoadCallback);

function OnLoadCallback() {
    var dbo;
    dbo = openDatabase('HelloWorld');

    dbo.transaction(
      function(T1) {
          T1.executeSql(
              'CREATE TABLE IF NOT EXISTS myTable ' +
              '  (myTableID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, ' +
              '   Field1 TEXT NOT NULL );'
          );
      }
    );

    dbo.transaction(function(T2) {
        T2.executeSql('SELECT * FROM myTable',[], function (T6, result) {
          for (var i=0; i < result.rows.length; i++) {
            var row = result.rows.item(i);
            $('#savedData').append('<li id="'+row.myTableID+'">' + row.Field1  + '</li>');
          }
        }, errorHandler);
    });

    $('form').submit(function() {
      var xxx = $('#xxx').val();
      dbo.transaction(
          function(T3) {
              T3.executeSql(
              'INSERT INTO myTable (Field1) VALUES (?);', [xxx], function(){
                    $('#savedData').append('<li id="ThisisWhereIneedHELP">' + xxx  + '</li>');
                     $('#xxx').val('');
              },
              errorHandler
              );
          }
      );
      return false;
    });
    $('#savedData > li').live('click', function (){
        deleteRow(this.id); 
        $(this).remove();
    });
}

function deleteRow(myTableID) {
    alert('trying to delete');
    dbo.transaction(function(T4) {
        T4.executeSql('DELETE FROM myTable WHERE myTableID = ?', [myTableID], function(){
            alert('Deleted!');
        }, errorHandler);
    });
}

function errorHandler(T5, error) {
    alert('Oops. Error was '+error.message+' (Code '+error.code+')');
    // T5.executeSql('INSERT INTO errors (code, message) VALUES (?, ?);',
    // [error.code, error.message]);
    return false;
}
</script>
</head>
<body>
<form method="post">
    <input name="xxx" id="xxx" />
    <p>
    <input type="submit" name="OK" />
    </p>
    <ul id="savedData">
    </ul>
</form>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

您需要在 OnLoadCallback 功能之外声明 dbo 变量。 此外,您目前还需要更新 openDatabase 调用的语法。

答案 1 :(得分:0)

我想没有人会回答这个问题,所以我会把它关闭。