3

私は電話ギャップ アプリケーションに取り組んでいます。要素 ID 1 には 4 つの値があると言う要素のデータを取得したいと考えています。sqllite データベースから取得し、スライド ビューに設定したいと考えています。

とりあえず以下のコードを使って、値を取得するのですが、要素ごとに個別に値を設定して、

    var instance= results.rows.length;
    for (var i=0; i<instance; i++)
    {
        cidinstance=results.rows.item(i).cid;
        var key=results.rows.item(i).key;
        var valueinstance=results.rows.item(i).value;
        console.log("cid= "+cidinstance +   "key= "+key);   
        console.log("cid= "+cidinstance +   "valueinstance= "+valueinstance);
    }
   if(val[1]==0) 
   {
        document.getElementById("s1cause").innerHTML=results.rows.item(0).value;
        document.getElementById("s2cause").innerHTML=results.rows.item(1).value;
        document.getElementById("s3cause").innerHTML=results.rows.item(2).value;
        document.getElementById("s4cause").innerHTML=results.rows.item(3).value;
        document.getElementById("s5cause").innerHTML=results.rows.item(4).value;
    }
    else if(val[1]==1)
    {
        document.getElementById("s1cause").innerHTML=results.rows.item(4).value;
        document.getElementById("s2cause").innerHTML=results.rows.item(5).value;
    }
    else if(val[1]==2)
    {
        document.getElementById("s1cause").innerHTML=results.rows.item(6).value;
        document.getElementById("s2cause").innerHTML=results.rows.item(7).value;
        document.getElementById("s3cause").innerHTML=results.rows.item(8).value;
    }

このようにして、静的な方法で値を設定します。これらの値を動的に取得したいと思います。

私のデータベースは、この形式で次のようになります。

id  cid values

1   1   value1
2   1   value2
3   1   value3

ガイドしてください。どのように実装すればよいですか?

その間、あなたの提案を待っている間、私はコードにいくつかの変更を加えて実行しようとしました.Hereは私が試したコードです

value=val[1];
var causedetails = results.rows.length;
for (var i=value; i<causedetails; i++)
{
    cidinstance=results.rows.item(i).cid;
    console.log("cid= "+cidinstance );
    var valueinstance=results.rows.item(i).value;
    //document.getElementById("s1cause").innerHTML=valueinstance;
    console.log("cid= "+cidinstance  + "" + "valueinstance= "+valueinstance);
}

val[1}=0 の場合、すべての値が完全に出力されました。

問題は、次の状況から始まりました.val[1]=1または2の場合....val[1]=1の場合、実際には2つの値しかありませんが、コンソールログに出力すると、1値が表示された後、エラーが表示されます

JSCallback: Message from Server:  SQLitePluginTransaction.queryCompleteCallback(value1,value2)--->(the 2 values that should have come in the console log).

どこが間違っているのか、教えてください。

console.log の出力

値=0のとき

05-16 13:42:59.062: I/Web Console(10351): cid= 1 valueinstance= VALUE 1 of cid 1 at file:///android_asset/www/abc.html?var%20id=0:181

05-16 13:42:59.062: I/Web Console(10351): cid= 1 valueinstance= VALUE 2 of cid 1 at file:///android_asset/www/abc.html?var%20id=0:181

05-16 13:42:59.062: I/Web Console(10351): cid= 1 valueinstance= VALUE 3 of cid 1 at file:///android_asset/www/abc.html?var%20id=0:181

05-16 13:42:59.062: I/Web Console(10351): cid= 1 valueinstance= VALUE 4 of cid 1 at file:///android_asset/www/abc.html?var%20id=0:181

値=1のとき

05-16 13:49:36.765: I/Web Console(11184): cid= 2 valueinstance= VALUE 2 of cid 2 at file:///android_asset/www/abc.html?var%20id=0:181

05-16 13:49:36.769: I/Web Console(11184): JSCallback: Message from Server:  SQLitePluginTransaction.queryCompleteCallback('1368692376635000','1368692376639000', [{"value":"VALUE 1","id":"5","cid":"2"},{"value":"VALUE 2","id":"6","cid":"2"}]); at file:///android_asset/www/cordova-2.1.0.js:3726

cordova2.1.js の SCRIPT は

function startXhr() {
    // cordova/exec depends on this module, so we can't require cordova/exec on the module level.
    var exec = require('cordova/exec'),
    xmlhttp = new XMLHttpRequest();

    // Callback function when XMLHttpRequest is ready
    xmlhttp.onreadystatechange=function(){
        if (!xmlhttp) {
            return;
        }        
if (xmlhttp.readyState === 4){
                    // If callback has JavaScript statement to execute
                    if (xmlhttp.status === 200) {

                        // Need to url decode the response
                        var msg = decodeURIComponent(xmlhttp.responseText);
                        setTimeout(function() {
                            try {
                                var t = eval(msg);
                            }
                            catch (e) {
                                // If we're getting an error here, seeing the message will help in debugging
    LINE 3726==>                console.log("JSCallback: Message from Server: " + msg);
                                console.log("JSCallback Error: "+e);
                            }
                        }, 1);
                        setTimeout(startXhr, 1);
                    }

誰かがこれで私を助けてくれますか???,お願いします

4

1 に答える 1

1

コードの繰り返し可能な部分を実行する関数を使用できます。

function setValues(count, offset) {
    var i;
    offset = offset || 0;
    for(i=0; i<count; i++) {
        document.getElementById("s"+(i+1)+"cause").innerHTML=results.rows.item(i+offset).value;
    }
}

id関数の最初の引数はパターンに一致する要素の数で、2 番目のパラメーターはデータを取得するs<positive number>cause開始インデックスです。results.rows

コードは次のようになります。

if(val[1]===0) {
    setValues(5);
} else if(val[1]===1) {
    setValues(2,4);
} else if(val[1]===2) {
    setValues(3,6);
}
于 2013-05-16T06:53:22.833 に答える