Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript从web sql中的结果集中删除行_Javascript_Html_Web Sql - Fatal编程技术网

使用javascript从web sql中的结果集中删除行

使用javascript从web sql中的结果集中删除行,javascript,html,web-sql,Javascript,Html,Web Sql,我知道web sql的结果集不是一个数组,更像是一个对象?我在一个结果集中循环,为了加快速度,我想在找到一行后删除它。我试过“删除”和“拼接”,前者什么也不做,而后者抛出一个错误。下面是我要做的一件事,注意第18行的删除: function selectFromReverse(reverseRay,suggRay){ var reverseString = reverseRay.toString(); db.transaction(function (tx) {

我知道web sql的结果集不是一个数组,更像是一个对象?我在一个结果集中循环,为了加快速度,我想在找到一行后删除它。我试过“删除”和“拼接”,前者什么也不做,而后者抛出一个错误。下面是我要做的一件事,注意第18行的删除:

function selectFromReverse(reverseRay,suggRay){
    var reverseString = reverseRay.toString();
    db.transaction(function (tx) {  
        tx.executeSql('SELECT votecount, comboid FROM counterCombos WHERE comboid IN ('+reverseString+') AND votecount>0', [], function(tx, results){
            processSelectFromReverse(results,suggRay);
        }); 
    }, function(){onError});
}

function processSelectFromReverse(results,suggRay){
    var i = suggRay.length;
    while(i--){
        var j = results.rows.length;
        while(j--){
            console.log('searching');
            var found = 0;
            if(suggRay[i].reverse == results.rows.item(j).comboid){
                delete results.rows.item(j);
                console.log('found');
                found++;
                break;
            }
        }       
        if(found == 0){
            console.log('lost');
        }
    }
}
现在已经快2年了,不受支持。取代了它的位置

删除对象的语法:
delete object是正确的。JavaScript中不经常使用它,但我使用过它,这是正确的用法

使用web存储(通常称为本地存储),您将实例化一个
localStorage
对象,该对象与方法
removietem(item key)
一起提供,该方法已内置


您可以在上面的webstorage或go链接上看到更多信息。

实际上,您使用DELETE sql命令从数据库中删除记录。例如:

tx.executeSql('DELETE FROM counterCombos WHERE comboid = ?', [comboid], success, error);
processselectfromfreverse
可以修改为包含
tx
作为输入

processSelectFromReverse(results,suggRay,tx) 

如果您关心的是IOS或Android,那么制作一个本机包装的应用程序将允许您创建一个javascript接口。从这个界面,您可以访问(android)sqlite并创建一个好的、可查询的解决方案。缺点是这需要人们下载你的应用程序,而不是访问网站


indexeddb支持增长相当缓慢。有了适当的编码风格,您可能会以相当可观的速度使用本地存储(如上面的注释所述)

据我所知,它目前不受支持。iOS或Android上还不支持索引数据库,我正在为其开发。如果您是为移动设备开发的,为什么不使用本地存储?我发现用web sql查询存储的数据比本地存储性能更好。我存储了大约50000小行数据(如果是JSON数据,大约1.5mb)。这很好,您可以获得更好的性能,但在一年内,当他们最终确定html5规范和google/apple放弃对web sql的支持时,因为它不在规范中。您将怎么做?我很确定,到那时IndexedDB或其他一些可查询的解决方案将被两者采用。到那时,我将不得不改变我的申请。但是现在,这是比localStorage更有效的方法。我不想从数据库中删除记录。我想从结果集中删除它,这样在循环时结果集会更短。我明白了。没有想过结果会被忽略,更好的是不应该。这是一种方法。所以只读。也许您可以使用Array.prototype.map迭代方法来提高性能,而不是循环。