-1

我在数据库表中有 5 个问题
1 文本框
2 下拉列表
3 下拉列表
4 文本框
5 文本框

但是当我完成交易时,它显示的顺序无效,例如
1 文本框
4 文本框
5 文本框
,然后
2 下拉列表
3 下拉列表

它应该以正确的顺序显示如上

在 getDropdown 函数中获取所有选项项

我做错了什么,任何人都可以帮忙吗?请,


//main函数最初调用以获取所有问题

function showQuestions(){
    db.transaction(function(tx) {
      tx.executeSql(selectAllStatement, [], function(tx, result) {
          dataset = result.rows;

        for (var i = 0, item = null; i < dataset.length; i++) {
          item = dataset.item(i);
          if(item['ANS_TYPE'] == "dropdown"){
              getDropdown(item['QU_MESSAGE'],item['QU_ID']);
          }
          if(item['ANS_TYPE'] == "textbox"){
              getTextbox(item['QU_MESSAGE']);
          }
        }//for loop
      });//execute
    });//transaction
}//end function

function getTextbox(question){
    $('#elements').append('<div data-role="fieldcontain">'
                        + '<label for="textinput1">'
                        + question
                        + '</label><br /><br />'
                        + '<input name="" id="textinput1" placeholder="" value="" type="text">'
                        + '<br /><br /><hr></div>').trigger('create');
}
function getDropdown(question,qu_id){
    var options = ''; option = '';
    options += '<div data-role="fieldcontain">'
            + '<label for="selectmenu1">'
            + question
            + '</label><br /><br />';
    db.transaction(function(tx) {
        tx.executeSql(selectChoiceStatement, [qu_id], function(tx, result) {
        dataset = result.rows;
        option = '';
        for (var i = 0, item = null; i < dataset.length; i++) {
            item = dataset.item(i);
            var data = item['CH_MSG'];
            option += '<option>'+data+'</option>';
        }
        options += '<select id="selectmenu1" name="">'+option+'</select>'
                 + '<br /><br /><hr></div>';
        $('#elements').append(options).trigger('create');
        });

    });

}
4

1 回答 1

0

的回调函数executeSql是异步调用的。

您可能应该立即创建并稍后<select>添加s。<option>

于 2013-07-06T18:11:28.160 回答