【问题标题】:In alert it is showing the data but not in home screen在警报中它正在显示数据但不在主屏幕中
【发布时间】:2013-07-31 13:25:46
【问题描述】:

我正在使用 PhoneGap SQLite,但我遇到了数据未显示的问题。警报(脚本)显示数据存在,但未显示在主屏幕上。我在代码中犯了什么错误?

在 jQuery 中:

function get_Emp_List() {             
           $("#employee").empty();
          
           $(location).attr('href', '#emp1');
           $.support.cors = true;   
           $.ajax({
                type: "GET",
                url: "one.html",
                contentType: "text/xml",
                dataType: "xml",
                data: "",
            crossDomain:true,
                success: function (data) {                  
                          $(data).find("employee").each(function () {   
                                                  
                          var emp_id = $(this).find('id').text();
                          var emp_name = $(this).find('short_name').text();
                         
                         
                           db.transaction(function(transaction) {
                                 transaction.executeSql('INSERT INTO Envy_Emp VALUES((SELECT max(_idEE)+1 FROM Envy_Emp),"'+emp_id+'","'+emp_name+'")',nullHandler,errorHandler);
                            });
                             });                     
                     ids_Dynamic_Emp_List();
                        
                          return false;
                       },
                error: function (data) {
                        alert("error");
                }
            });     
  }

      /*  end Employee list script */
  
   /*ids_Dynamic_Emp_List() method coding Start*/ 
 
  function ids_Dynamic_Emp_List(){
  /*sql start*/
  
  /*sqlite code for dynamic Emp list*/
  db.transaction(function(tx){
    tx.executeSql('SELECT * FROM Envy_Emp;', [], 
  
        function(tx,results){
            
                   if (results != null && results.rows != null) { 
                    var myLen=results.rows.length;
                     for (var i = 0; i < results.rows.length; i++) {
                         var for_Name = results.rows.item(i).Envy_Emp_Name;
                         var for_ID = results.rows.item(i).Envy_Emp_ID;
                         var for_E_ID=results.rows.item(i)._idEE;
                        /*create table list Dynamically using Sqlitedata base */
                             var scripts = "<a href='#' data-role='button' data-theme='b' data-inline='true' onclick='get_Menu_List(id);' id='"+for_E_ID+"'>"+for_Name+"</a>";
                             alert(scripts);
                          $(".employee1")
                          .append(scripts)
                          .trigger('create');
                        /*create table list Dynamically using Sqlitedata base End*/ 
                        }
                      }
                   },errorHandler);
                  }
                 ,errorHandler,nullHandler);
                 return; 
                  }

在 HTML 中:

<div data-role="page" id="emp1">
  <div date-role="content">
    <div id="employee" class="employee1"/>
  </div>
</div>

【问题讨论】:

  • 我会从您的代码中假设您有多个员工 div?
  • 尝试 .html 代替 .append 并尝试添加一个虚拟文本而不是该脚本,如果可行,请告诉我们
  • @Gajotres 我忘记关闭 div 但我的 html5 代码是正确的我知道它在我的 jquery 中有prblm 请帮助我
  • 你的 div 是正确的,我不是在谈论它。告诉我你的项目中是否有多个 div 和 id 员工?这是一个重要的问题。
  • @Gajotres 只有一个 id=employee 我在我的项目中使用过

标签: javascript html sqlite jquery-mobile cordova


【解决方案1】:

请你试试这个。

在这个函数中调用一个函数并传递数据,而不是附加代码。在被调用函数中,追加传入的数据。

function ids_Dynamic_Emp_List(){
  /*sql start*/

  /*sqlite code for dynamic Emp list*/
  db.transaction(function(tx){
  tx.executeSql('SELECT * FROM Envy_Emp;', [], 

        function(tx,results){

                   if (results != null && results.rows != null) { 
                    var myLen=results.rows.length;
                     for (var i = 0; i < results.rows.length; i++) {

                             appendScripts(results.rows.item(i)); /*call function*/

                        /*create table list Dynamically using Sqlitedata base End*/ 
                        }
                      }
        },errorHandler);
   },errorHandler,nullHandler);
   return; 
}

然后在这里追加数据,

    /*function appends data to div*/
    function appendScripts(values){
          var for_Name = values.Envy_Emp_Name;
          var for_ID = values.Envy_Emp_ID;
          var for_E_ID= values._idEE;

          /*create table list Dynamically using Sqlitedata base */
          var scripts = "<a href='#' data-role='button' data-theme='b' data-inline='true' onclick='get_Menu_List(id);' id='"+for_E_ID+"'>"+for_Name+"</a>";
          $(".employee1").append(scripts).trigger('create');
    }

更新 发现 html 5 的问题,将 html 更改为,

<div data-role="page" id="emp1">
       <div date-role="content">
          <div id="employee" class="employee1"></div>
       </div>
 </div>

【讨论】:

  • 你能把函数调用改成appendScripts('hello....');而不是appendScripts(scripts);
  • i logcat 显示未捕获的类型错误无法读取“code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js”处未定义的属性“选项”;
  • 选项 ???你试过这个吗,你能把这个函数调用改成 appendScripts('hello....');而不是 appendScripts(scripts);
  • nthing is cuming 我也试过了
  • 请更改此行并尝试将&lt;div id="employee" class="employee1" /&gt; 更改为&lt;div id="employee" class="employee1" &gt;&lt;/div&gt;
【解决方案2】:

阿图尔,

从我们在 cmets 中的讨论和查看之后 您的以下代码行

$(".employee1").append(scripts).trigger('create');

以下解决方案之一应该适合您。

  • 你应该定义css类employee1

如果您使用类选择器查找 HTML 元素,即 .employee1,那么您必须在某处定义该类。

  • 将该行代码修改为 $("#employee").append(scripts).trigger('create');

否则使用 id 选择器。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多