Javascript WebStorage-executeSql提供的undefined不是for循环中的函数

Javascript WebStorage-executeSql提供的undefined不是for循环中的函数,javascript,web-storage,Javascript,Web Storage,这是我的密码: 给定一个对象,我试图在webStorage数据库中插入一些数据。问题是控制台返回我一个“未定义的不是函数”,我不知道为什么 下面是我的代码片段 试试看{ db=openDatabase(“mca”,“1.0”,“db mca”,200000); 数据库事务(功能(tx){ tx.executeSql(“创建表,如果不存在计划\材料(id整数主键自动递增,计划\ id整数,材料\ id整数,材料\名称文本)”,[]); },onDbError,fillDb); }捕获(e){ 警报

这是我的密码:

给定一个对象,我试图在webStorage数据库中插入一些数据。问题是控制台返回我一个“未定义的不是函数”,我不知道为什么

下面是我的代码片段
试试看{
db=openDatabase(“mca”,“1.0”,“db mca”,200000);
数据库事务(功能(tx){
tx.executeSql(“创建表,如果不存在计划\材料(id整数主键自动递增,计划\ id整数,材料\ id整数,材料\名称文本)”,[]);
},onDbError,fillDb);
}捕获(e){
警报(“网站存储错误”);
}
函数回调\计划\材料(obj){
控制台日志(obj);
数据库事务(功能(tx){
对于(变量k=0;k}
tx2
未定义,不应为
tx

tx.execuseSql("INSERT INTO planning_x_material(planning_id, material_id, material_name) VALUES (?, ?, ?)", [planning.id, material.id, material.name]);
  • onDbError
    未定义
  • tx
    not
    tx2
  • 在insert
    executeSql
    not
    execuseSql
  • 应该有用

    try {
      db = openDatabase("mca", "1.0", "db mca", 200000);
      db.transaction(function(tx) {
        tx.executeSql("CREATE TABLE IF NOT EXISTS planning_x_material(id INTEGER PRIMARY KEY AUTOINCREMENT, planning_id INTEGER, material_id INTEGER,  material_name TEXT)", []);
      }, onDbError, fillDb);
    } catch(e) {
      console.log("webstorage error",e);
    }
    
    function onDbError(tx, err){
      console.log('There is error', err);
    
    }
    
    
    function callback_planning_material(obj) {
      console.log(obj);
    
      db.transaction(function(tx) {
        for(var k = 0; k < obj.length; k++) {
          for (var i = 0; i < obj[k].material.length; i++) {
            (function (k, i) {
              var planning = obj[k];
    
              var material = planning.material[i];
    
              tx.executeSql("INSERT INTO planning_x_material(planning_id, material_id, material_name) VALUES (?, ?, ?)", [planning.id, material.id, material.name]); // here console gives me "undefined is not a function" error
            })(k, i);
          }
        }
      }, onDbError);
    }
    
    function fillDb() {
      // example object
      var obj = [
        {
          id: 1,
          name: "name 1",
          material: [
            { id: 1, name: "mat. 1" },
            { id: 2, name: "mat. 2" },
          ]
        },
    
        {
          id: 2,
          name: "name 2",
          material: [
            { id: 3, name: "mat. 3" },
            { id: 4, name: "mat. 4" },
          ]
        }
      ];
    
    
      callback_planning_material(obj);
    } 
    
    试试看{
    db=openDatabase(“mca”,“1.0”,“db mca”,200000);
    数据库事务(功能(tx){
    tx.executeSql(“创建表,如果不存在计划\材料(id整数主键自动递增,计划\ id整数,材料\ id整数,材料\名称文本)”,[]);
    },onDbError,fillDb);
    }捕获(e){
    日志(“Web存储错误”,e);
    }
    功能onDbError(发送、错误){
    console.log('有错误',err);
    }
    函数回调\计划\材料(obj){
    控制台日志(obj);
    数据库事务(功能(tx){
    对于(变量k=0;k
    您有
    tx.execuseSql
    ,应该是
    tx.executeSql
    tx2
    是一个打字错误,将我的文件转换为SO问题。onDbError也在我的文件中定义,只是与这个问题无关。我猜这只是
    execuTeSql
    上的一个愚蠢的输入错误。。我太笨了!谢谢-在23小时自动取款机之前不能奖励