私はアンドロイド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関数が呼び出されているように見え事前
おかげで私は、インターネット接続のためのdevicereadyを呼び出していますし、彼らが唯一の私はdoIscrollRefresh()を呼び出す必要がありlist1.Soを呼び出していますから、準備ができた文書には、親切に私を導きます。ありがとうございました – javadevelopers
あなたはデバイスの上でonDeviceReadyを呼び出しています。その前にdoIscrollRefreshを実行します。アイテムをリストに追加した後、querySuccessに入れてみてください。私はコードで自分の答えを更新します。 – Martijn
返信ありがとうございます。私はスクロールバーを持っており、リストを含むdiv(sidemenu)がスクロールされています。しかし、私はスクロール(リストを含む別のdiv)内の2つのリストを持っています。私を案内してくれる。 – javadevelopers