0

jqueryまたはjavaスクリプトで同期メソッドを呼び出す方法を教えてください。実際の問題は、クリックボタンで1つの関数を呼び出して値を取得することです。関数呼び出しを下回っているときに、値を取得する時間が経つと未定義の値が取得されます。私の例で説明します。1) Del ボタンをクリックして CASENAME 値を取得する必要があります。データベースから値を取得しています。この deleteFolder 関数呼び出しを取得している間、未定義の値が取得されます。次に、ここで実際の値を取得した後、alert("CASENAME"+CASENAME); Java で行うように、このメソッドを同期する必要があると思います。

$(document).on('click', '.del', function(event) {

  ROW_ID = $(this).closest(".caseRowClick").attr("id");
  //getCaseNameValue();
  db.transaction(function (tx) {
            var caseName_h = $('.caseName_h').val();
            $yoursql = 'SELECT CaseName FROM CaseTable WHERE id ='+ ROW_ID;
            tx.executeSql($yoursql, [], function (tx, results) {
                CASENAME=results.rows.item(0).CaseName;
               alert("CASENAME"+CASENAME);
            });
});
  deleteData();
  deleteFolder();
  $(".ctrl").toggleClass("togg");
  event.stopPropagation();
});

function deleteFolder(){

     alert(CASENAME);
      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
        console.log("Root ================********************* " + fs.root.fullPath);

        TEXTFILE_PATH=fs.root.fullPath;
        fs.root.getDirectory(CASENAME, {create: true, exclusive: false},
          function(dirEntry) {
            dirEntry.removeRecursively(successfullyDelete, faildelete)
          });

      });

    }
4

1 に答える 1

0

その変数(CASENAME)を渡す必要があります...

または、変数が両方の関数のスコープ内にある必要があります。

これを試して:

$(document).on('click', '.del', function (event) {

    var ROW_ID = $(this).closest(".caseRowClick").attr("id");
    var CASENAME;
    //getCaseNameValue();
    db.transaction(function (tx) {
        var caseName_h = $('.caseName_h').val();
        $yoursql = 'SELECT CaseName FROM CaseTable WHERE id =' + ROW_ID;
        tx.executeSql($yoursql, [], function (tx, results) {
            CASENAME = results.rows.item(0).CaseName;
            alert("CASENAME" + CASENAME);
        });
    });
    deleteData();
    deleteFolder(CASENAME);
    $(".ctrl").toggleClass("togg");
    event.stopPropagation();
});

function deleteFolder(CASENAME) {

    alert(CASENAME);
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
        console.log("Root ================********************* " + fs.root.fullPath);

        TEXTFILE_PATH = fs.root.fullPath;
        fs.root.getDirectory(CASENAME, {
                create: true,
                exclusive: false
            },
            function (dirEntry) {
                dirEntry.removeRecursively(successfullyDelete, faildelete)
            });

    });

}
于 2013-07-17T05:17:09.457 に答える