disneyland
disneyland
  • 发布:2015-06-22 18:52
  • 更新:2015-06-26 11:49
  • 阅读:1667

contacts[i].phoneNumbers[0].value

分类:HTML5+

Uncaught TypeError: Cannot read property '0' of null
总是报错,换成contacts[i].phoneNumbers[1].value照样报错。

            for(var j = 0; j < 10; j++)  
                if(contacts[i].phoneNumbers[j].value != null){  
                plus.device.dial(contacts[i].phoneNumbers[j].value,true);  
                break;  
            }
2015-06-22 18:52 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

从错误提示来看应该是访问数据返回的是null导致错误:

  1. 确认contacts[i]是否为null
  2. 确认contacts[i].phoneNumbers[j]是否为null
  • disneyland (作者)

    为什么联系人有电话号码,测试时,contacts[i] 不为null ,而contacts[i].phoneNumbers 为null。

    2015-06-25 18:04

disneyland

disneyland (作者)

为什么联系人有电话号码,测试时,contacts[i] 不为null ,而contacts[i].phoneNumbers 为null。

  • DCloud_App_Array

    实际联系人中有电话号码信息吗?查询时有没有指定包含电话号码数据?

    确认下是Android还是iOS,如果指定了理论上就算没有电话号码也应该返回空数据才对。

    2015-06-25 18:43

  • disneyland (作者)

    Android系统,联系人中有号码信息,查询时也指定了包含电话号码数据。

    2015-06-26 11:45

disneyland

disneyland (作者)

    plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE,function(contactsBook){  
        contactsBook.find(["displayName","phoneNumbers"],function(contacts){  
            for(var i = 1; i<contacts.length; i++){  
                var newLi = document.createElement('li');  
                newLi.className = "mui-table-view-cell";      //这里是className而不失classes;  
                newLi.innerHTML = '<a><span class="mui-icon mui-icon-person"></span>&nbsp'+contacts[i].displayName+'<span class="mui-pull-right">'+contacts[i].phoneNumbers[0].value+"</span></a>";  
                newLi.addEventListener('tap',function(){  
                    //console.log(contacts[i].phoneNumbers[0].value);  
                    if(contacts[i].phoneNumbers == null)  
                      console.log("contactPhone is null");  
                    else   
                      console.log("contactPhone is not null");  

                    for(var j in contacts[i].phoneNumbers){  
                        if(j == null)  
                        console.log("is null");  
                        else  
                        console.log("not null");  
                        console.log(j.value);  
                            //plus.device.dial(j,true);  
                            break;  
                        }  
                })  
                fatherelement.appendChild(newLi);  
                //console.log(newLi.classes);  
            }  
                var vals = document.getElementsByTagName('li');  
                console.log(vals.length);  
                //console.log(vals[0].innerHTML);  
        },function(){  
            mui.alert("获取联系人失败");   
        })  
    },function(){  
        mui.alert("获取通讯录失败!");   
    })

这是代码,第一次查询生成通讯录时,手机号出来了,但会报错( Cannot read property '0' of null),但是第二次添加'tap‘事件拨打手机号时,手机号不出来,还是报错( Cannot read property '0' of null)

该问题目前已经被锁定, 无法添加新回复