2014-02-17 57 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可能會拋出一個未定義的錯誤。

分段分割該行。

相關問題