<!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<TelNum>true<geduan>13222222222<TelNum>false<geduan>13233333333<TelNum>false,a3,a4,a5,a6
b1,13241711111<TelNum>true<geduan>13241722222<TelNum>false<geduan>13241733333<TelNum>false,b3,b4,b5,b6
c1,11111<TelNum>true<geduan>22222<TelNum>false<geduan>33333<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>
<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<TelNum>true<geduan>13222222222<TelNum>false<geduan>13233333333<TelNum>false,a3,a4,a5,a6
b1,13241711111<TelNum>true<geduan>13241722222<TelNum>false<geduan>13241733333<TelNum>false,b3,b4,b5,b6
c1,11111<TelNum>true<geduan>22222<TelNum>false<geduan>33333<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>
{
arrResult[i] = new ContactsData(arrRows[i]);
}
var result = arrResult[2].TelephoneNumber[0]; ..........当i=0,1的时候,你访问arrResult[0或1]么问题,但此时arrResult[2]是未赋值的,undefined
当intRowCount<2的时候你这个程序会报错,,
放在了循环的外面,当intRowCount<2的时候肯定出错了
=> this.TelephoneNumber[i] = new TelephoneNumber(arrTempTelNum[i]);