2014-02-17 34 views
0

我有以下代码,它从设备获取所有联系人,并在表中显示 。在android phonegap应用程序上修改html内容

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称为:科尔多瓦-3.1.0

的PhoneGap:phonegap- 2.2.0

这对虚拟仿真器非常有效,但是在真实设备上测试时(在两个ndroid设备) 它获取的接触,但“tablebody”的HTML内容不被修改 我试图

$('#tablebody').html(htmltd) 

,但仍然不能正常工作。 并且在控制台中也出现错误,并且在logcat中也没有错误。

回答

0

你做for里面一个很长的串联:

htmltd += '<tr><td>' + contacts[i].displayName + '</td><td>' + contacts[i].phoneNumbers[0].value + '</td><td>' + contacts[i].emails[0].value + '</td></tr>' ; 

也许有些领域是不存在真正的设备上。考虑一下emailsphoneNumbers。 假设存在零索引值,您正在静态访问它们。

JavaScript可能会抛出一个未定义的错误。

分段分割该行。

相关问题