我有以下代码从设备中获取所有联系人,并显示 他们在一张桌子里。
function backupAllTheContacts() {
var htmltd ;
var filter = ["displayName", "phoneNumbers", "emails"] ; // Fields
navigator.contacts.find(filter, function(contacts) {
//contactsList = JSON.stringify(contacts) ;
alert('found ' + contacts.length + ' contacts') ;
for (var i=0; i<contacts.length; i++) {
htmltd += '<tr><td>' + contacts[i].displayName + '</td><td>' + contacts[i].phoneNumbers[0].value + '</td><td>' + contacts[i].emails[0].value + '</td></tr>' ;
}
if(htmltd == ''){
alert('array population empty') ;
}
else{
document.getElementById("tablebody").innerHTML = htmltd ;
}
}, onError, {"multiple": true});
function onError(contactError){
alert("Error = " + contactError.code);
}
}
注意:在页面完全加载后单击按钮时调用此函数
cordorva:cordova-3.1.0
Phonegap:phonegap-2.2.0
这在虚拟仿真器上工作得很好,但在真实设备上测试时(在两个Android设备上测试) 它获取联系人但是&#39; tablebody&#39;的html内容。没有修改 我试过了
$('#tablebody').html(htmltd)
但仍然没有工作。
并且控制台和logcat
中都没有出现错误。
答案 0 :(得分:0)
您在for
:
htmltd += '<tr><td>' + contacts[i].displayName + '</td><td>' + contacts[i].phoneNumbers[0].value + '</td><td>' + contacts[i].emails[0].value + '</td></tr>' ;
可能某些字段在真实设备上不存在。考虑emails
或phoneNumbers
。
假设存在零索引值,您将静态访问它们。
Javascript可能会抛出一个未定义的错误。
将这一行拆分为分段。