1

これが私がやろうとしていることです。チェックボックスの値を取得し、データベースから対応する値を削除する単純な Java スクリプト コードがあります。赤、青、黄色の 3 つのオプションが表示され、赤が選択されているとします。赤のレコードが削除されます。

このコードはそれを完璧に行います。

var n = $('input[type=checkbox]:checked').val();
db.transaction(function (tx) {
                                tx.executeSql('delete from details where name = ?',[n],function(){
                                alert('The event is successfully deleted');
                            });

                        });

ただし、複数のチェックボックスの選択もキャプチャする必要があります (つまり、赤と青の両方が選択されているか、3 つすべてが選択されている場合、コードは選択された値のレコードを削除する必要があります)。次のコードを使用して、配列で選択された値をキャプチャできます。

var checkboxValues = $('.myCheckbox:checked').map(function() {
                        return $(this).val();
                    }).get();

今度は、SQL ステートメントでこの文字列の配列を使用する必要があります。次のコードを試しましたが、役に立ちませんでした。

db.transaction(function (tx) {
                                tx.executeSql('delete from details where name in (?)',[checkboxValues],function(){
                                alert('The event is successfully deleted');
                            });

他のいくつかの回答は、 toString() および join() 関数を使用して配列オブジェクトをコンマ区切りの文字列に変換することを提案しましたが、それらはあまり役に立ちませんでした。SQL ステートメントが正しいかどうか疑問です。誰か助けてください。前もって感謝します !!

4

1 に答える 1

2

たぶん、関数を好転させて、返された値を反復処理し、それぞれに対して db 関数を順番に実行することができます。次のようなもの:

    $(checkboxValues).each(function(tx){...

または、ウィンドウの外にセキュリティを投げている限り、最初の関数内で各値が見つかったときに SQL 更新を実行することを検討できます。次に、値を a として含めるだけthisでよく、変数が失われる可能性があります。

于 2013-06-16T20:23:24.390 に答える