<!DOCTYPE  html  PUBLIC  "-//W3C//DTD  XHTML  1.0  Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
 
<html  xmlns="http://www.w3.org/1999/xhtml"  >  
<head><title>  
           Untitled  Page  
</title>  
       <script  type="text/javascript">  
       function  ReturnCsvArray(strCsvString)  
       {  
               var  arrRows  =  strCsvString.split("\n");  
               var  intRowCount  =  arrRows.length;  
               var  arrResult  =  new  Array(intRowCount);  
               for(var  i  =  0;  i  <  intRowCount;  i++)  
               {  
                       arrResult[i]  =  new  ContactsData(arrRows[i]);  
               }  
               //  这一段是把字符串数据拆解成为对象,问题出在下面这行  
               //  对象ContactsData中的其他类型值可以正常使用  
               //  但是TelephoneNumber这个对象数组不能正常使用。  
               //  用编译器调试的时候,发现TelephoneNumber对象数组中的内容是正确的  
               //  但是不知道为什么不能正常引用  
               //  各位javascript高手来指点一下吧  
               var  result  =  arrResult[2].TelephoneNumber[0];  
               alert(result.Value);  
       }  
         
         
       function  Button1OnClick()  
       {  
               ReturnCsvArray(document.getElementById("HiddenField1").value);  
               return  false;  
         
       }  
         
       function  ContactsData(strConData)        
       {        
               var  arrTemp  =  strConData.split(",");  
               this.CustomerName  =  arrTemp[0];  
               var  arrTempTelNum  =    arrTemp[1].split("<geduan>");  
               this.TelephoneNumber  =  new  Array(arrTempTelNum.length);  
               for(var  i  =  0;  i  <  arrTempTelNum.length;  i++)  
               {  
                       TelephoneNumber[i]  =  new  TelephoneNumber(arrTempTelNum[i]);  
               }  
               this.Name  =  arrTemp[2];  
               this.DefaultContact  =  arrTemp[3];  
               this.DefaultTelephone  =  arrTemp[4];  
       }        
         
         
       function  TelephoneNumber(strTelNum)        
       {        
               var  arrTemp  =  strTelNum.split("<TelNum>");  
               this.Value  =  arrTemp[0];        
               this.Default  =  arrTemp[1];      
       }        
       </script>  
</head>  
<body>  
       <form  name="form1"  method="post"  action="Default.aspx"  id="form1">  
<div>  
<input  type="hidden"  name="__VIEWSTATE"  id="__VIEWSTATE"  value="/wEPDwUKMTAxNTE2NzQ4N2Rklb/8Msbsr3p+G/mXt57y8LdR164="  />  
</div>  
 
       <div>  
               <input  type="hidden"  name="HiddenField1"  id="HiddenField1"  value="a1,13211111111&lt;TelNum>true&lt;geduan>13222222222&lt;TelNum>false&lt;geduan>13233333333&lt;TelNum>false,a3,a4,a5,a6  
b1,13241711111&lt;TelNum>true&lt;geduan>13241722222&lt;TelNum>false&lt;geduan>13241733333&lt;TelNum>false,b3,b4,b5,b6  
c1,11111&lt;TelNum>true&lt;geduan>22222&lt;TelNum>false&lt;geduan>33333&lt;TelNum>false,c3,c4,c5,c6"  />  
               <input  type="submit"  name="Button1"  value="Button"  onclick="return  Button1OnClick();"  id="Button1"  /></div>  
         
<div>  
 
           <input  type="hidden"  name="__EVENTVALIDATION"  id="__EVENTVALIDATION"  value="/wEWAwKwgZT1AgKQo8KrDQKM54rGBhbGR9HhwHrPsZk5gQ7O2S6jjjbu"  />  
</div></form>  
</body>  
</html>

解决方案 »

  1.   

    for(var i = 0; i < intRowCount; i++)
    {
    arrResult[i] = new ContactsData(arrRows[i]);
    }
    var result = arrResult[2].TelephoneNumber[0]; ..........当i=0,1的时候,你访问arrResult[0或1]么问题,但此时arrResult[2]是未赋值的,undefined
      

  2.   

    没看清题目,,,不好意思
    当intRowCount<2的时候你这个程序会报错,,
      

  3.   

    var  result  =  arrResult[2].TelephoneNumber[0];
    放在了循环的外面,当intRowCount<2的时候肯定出错了
      

  4.   

    var  result  =  arrResult[2].TelephoneNumber[0];  //下标不对 TelephoneNumber[i]  =  new  TelephoneNumber(arrTempTelNum[i]);  //少了this
    => this.TelephoneNumber[i]  =  new  TelephoneNumber(arrTempTelNum[i]);