0
連絡先を取得してデータベースに保存するphonegapアプリケーションを作成しています。私は、後でデータベーステーブルに格納される人の電話番号と表示名を保存する、2つの空のグローバル配列を先頭に作成しました。連絡先が配列に正常に保存されていることを確認するために、私はtest_data()
関数を作成しました。Phonegapを使用したJavascriptグローバル配列が機能しない
私の問題は、test_data()
コードが機能しておらず、ログに値が表示されていないことです。今私はtest_data()
の機能からonSuccess()
にそのコードを移動する場合、それは正常に動作します。ここにコードがあります。 JSでグローバル配列を宣言するのは適切な方法ではありません。
<!DOCTYPE html>
<html>
<head>
<title>Contact Example</title>
<script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script>
<script type="text/javascript" charset="utf-8">
var gcont = []; var gphon = [];
// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
// find all contacts with 'Bob' in any name field
var options = new ContactFindOptions();
options.filter="";
options.multiple=true;
var fields = ["displayName", "phoneNumbers"];
navigator.contacts.find(fields, onSuccess, onError, options);
test_data();
}
// onSuccess: Get a snapshot of the current contacts
//
function onSuccess(contacts) {
for(var index=0;index<contacts.length;index++){
gcont[index] = contacts[index].displayName;
gphon[index] = contacts[index].phoneNumbers[0].value;
}
}
function test_data(){
for (z=0;z<gcont.length;z++){
console.log(gcont[z]);}
}
// onError: Failed to get the contacts
//
function onError(contactError) {
alert('Error With Contacts!');
}
</script>
</head>
<body>
<h1>Example</h1>
<p>Find Contacts</p>
</body>
</html>
私のJSの知識がかなり基本的であるか、上記のコードで何が間違っているのか教えてください。どうすれば修正できますか? –
あなたはcontacts.findの結果で何かしたいのであれば、あなた自身がこの質問に答えました。それはonSuccess関数内にある必要があります。 – gmh04
おそらく、Async JavaScript http://leanpub.com/asyncjsのeBook –