2012-04-20 24 views
2

私はアンドロイドphonegap.Inのアプリケーションで私は動的にdivのリストを追加してアプリケーションを作成しました。私はiscroll.Myコードを使用して、動的divのためにスクロールバーを追加したいjqueryまたはjavascriptを使用した動的div用のスクロールバー

HTMLです:

<div class="sidemenu" ></div> 
    <div class="searchsidemenu"></div> 

スタイル:

#scroller 
{ 
top:90px; 
position:absolute; z-index:1; 
width:90%; 
height:40px; 
background-color:#FFFFFF; 
} 
li 
    { 
list-style:none; 
} 

スクリプト:

  • iscroll:

    var myScroll; 
    function loaded() { 
        myScroll = new iScroll('scroller', { 
         useTransform: false, 
         vScroll: true, 
         onBeforeScrollStart: function (e) { 
          var target = e.target; 
          while (target.nodeType != 1) target = target.parentNode; 
    
          if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA') 
           e.preventDefault(); 
         } 
        }); 
    } 
    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 
    document.addEventListener('DOMContentLoaded', setTimeout(function() { loaded(); }, 0), false); 
    /** scrollbar for dynamic div*/ 
    function doIscrollRefresh() { 
        setTimeout(function() { 
         myScroll.refresh(); 
        }, 0); 
    } 
    

    リスト1 - 動的DIV(Iはlocaldatabaseから値をretrivedと動的DIVに添付されています):

    function list1(alphabet) 
    { 
         doIscrollRefresh(); 
        document.addEventListener("deviceready", onDeviceReady, false); 
        function onDeviceReady() 
        { 
    
          var db = window.openDatabase("createdb", "1.0", "PhoneGap Demo", 200000); 
    
          db.transaction(queryDB, errorCB,successCB); 
    
         } 
         function queryDB(tx) 
        { 
          var a=alphabet; 
          tx.executeSql("SELECT Textvalue FROM TextValue WHERE Textvalue LIKE '" + a + "%'",[], querySuccess, errorCB); 
        } 
    
        function querySuccess(tx,results) 
         { 
          $(".sidemenu").append("<li>"+"<label style='background-color:#C1CDD9' >"+alphabet+ "</label>"+"</li>"); 
          for (i = 0; i < results.rows.length; i++) 
          { 
           $(".sidemenu").append("<li>"+"<a id='"+i+"' href='#'>" +results.rows.item(i).Textvalue + "</a>"+ "<hr/>"+ "</li>"); 
          } 
          $(".sidemenu").append("<hr/>"); 
         } 
        function errorCB(err) 
        { 
           alert("Error processing SQL: "+err.code); 
        } 
        function successCB() 
        { 
         //alert("appended"); 
        } 
    } 
    

    リスト2: - 動的DIV(Iはlocaldatabaseから値をretrivedと動的DIVに添付されています) :

     function retrieveservercauses(arr) 
         { 
    
        document.addEventListener("deviceready", onDeviceReady, false); 
        function onDeviceReady() 
        { 
         var db = window.openDatabase("createdb", "1.0", "PhoneGap Demo", 200000); 
         db.transaction(populateDB, errorCB,successCB); 
        } 
        function populateDB(tx) 
        { 
          tx.executeSql('CREATE TABLE IF NOT EXISTS Name (Name)'); 
          for(i=0;i<arr.length;i++){ 
          var arra=arr[i]; 
          tx.executeSql('INSERT INTO Name (Name)VALUES(?)',[arra]); 
          } 
        } 
        function errorCB(err) 
        { 
         // alert("Error processing SQL: "+err.code); 
        } 
        function successCB() 
        { 
         var db = window.openDatabase("createdb", "1.0", "PhoneGap Demo", 200000); 
         db.transaction(queryDB, errorCB); 
        } 
        function queryDB(tx) 
        { 
         var text=$("#searchbox").val(); 
         tx.executeSql("SELECT * FROM Name WHERE Name LIKE '%" + text + "%'",[], querySuccess1, errorCB); 
        } 
        function querySuccess1(tx,results) 
        { 
         var ar=new Array(); 
         for (i = 0; i < results.rows.length; i++) 
         { 
          var text=$("#searchbox").val(); 
          var name=results.rows.item(i).Name; 
          ar.push(name); 
         } 
         list2(ar); 
         droptextvalue(); 
         insertTextvalue(text,ar); 
        } 
        } 
    
         function list2(ar) 
         { 
    
        for(i=0;i<ar.length;i++) 
         { 
    
        $(".searchsidemenu").append("<li>"+"<a href='#'>" +ar[i] +"</a>"+"</li>"); 
    
         }  
         doIscrollRefresh(); 
          $(".searchsidemenu").hide(); 
    
          } 
    

    動的にスクロールバーを追加するにはどうすればよいですか?それはlogcatのエラーを示しています。myScrollは定義されていませんエラーはオブジェクトではありません。ドキュメントの読み込みが完了する前にdoIscrollRefresh関数が呼び出されているように見え事前

答えて

0

でダイナミックdiv.pleaseガイドme.thanksためaddtheスクロールバーに私にsolution.howを教えてください。私はあなたのコードからlist1関数が正確に呼び出されているが、次の順序であることを指示することはできません:

1:ドキュメントをロードするまで待ちます。これを既に行っています)
2:スクロールオブジェクトを作成します。
3:ドキュメントの準備とスクロールが作成された後、doIscrollRefresh関数を宣言します。
4最後にすべての火災リスト1の後、あなたのことをしてください。

list1の先頭にあるdoIscrollRefreshを削除し、querySuccessに移動してみてください(下記のコメントのように)。このように:あなたのreply.fromため

function querySuccess(tx,results) 
    { 
     $(".sidemenu").append("<li>"+"<label style='background-color:#C1CDD9' >"+alphabet+ "</label>"+"</li>"); 
     for (i = 0; i < results.rows.length; i++) 
     { 
      $(".sidemenu").append("<li>"+"<a id='"+i+"' href='#'>" +results.rows.item(i).Textvalue + "</a>"+ "<hr/>"+ "</li>"); 
     } 
     $(".sidemenu").append("<hr/>"); 
     doIscrollRefresh(); 
    } 
+0

おかげで私は、インターネット接続のためのdevicereadyを呼び出していますし、彼らが唯一の私はdoIscrollRefresh()を呼び出す必要がありlist1.Soを呼び出していますから、準備ができた文書には、親切に私を導きます。ありがとうございました – javadevelopers

+0

あなたはデバイスの上でonDeviceReadyを呼び出しています。その前にdoIscrollRefreshを実行します。アイテムをリストに追加した後、querySuccessに入れてみてください。私はコードで自分の答えを更新します。 – Martijn

+0

返信ありがとうございます。私はスクロールバーを持っており、リストを含むdiv(sidemenu)がスクロールされています。しかし、私はスクロール(リストを含む別のdiv)内の2つのリストを持っています。私を案内してくれる。 – javadevelopers

関連する問題