请教我在<SCRIPT>下面定义了几个数组,然后,在其中一个函数触发后,改变了值
但,其他函数跟着触发后,得不到值啊?
比如下面的这个例子,main()函数改变了 NUM的值,然后接着 Encode()函数触发执行,得到的NUM的值还是3,这是为什么?
怎样才能各个函数共享值呢?<!--
var arr_alp;//字母表
var arr_bund;//每个字母表中的字母对应的下界
var base;//单位边界
var low,high;//在Encode函数中使用
var str="The process:<br>";
var NUM=3;
function main(value)
{
var NUM=Number(value);//获取字母表的个数
arr_alp=new Array(NUM);//字母表的个数
arr_bund=new Array(NUM);//每个字母表对应的下界
base=(1/NUM);//单元边界
var i;
for(i=0;i<NUM;i++)
{
//arr_alp[i]='A';
arr_alp[i]=String.fromCharCode('A'+i);
arr_bund[i]=i*base;
}
//alert(base);
str+=base;
str+="<br>";
for(i=0;i<NUM;i++)
{
// str+=arr_alp[i];
if(i==NUM-1)
{
str+=arr_bund[i];
str+="-------------";
str+=1;
str+="<br>";
}
else
{
str+=arr_bund[i];
str+="-------------";
str+=arr_bund[i+1];
str+="<br>";
}
}
Output.innerHTML=str;
}
function Encode(string)
{
var j;
var i=string.length;//i表示文本框已经输入字母的个数
var s=string.charAt(i);//捕捉文本框中输出的最后一个字符
alert(NUM);
for(j=0;j<NUM&&s!='!';j++)
{
alert(string);
if(s==arr_alp[j]&&i==1)//第一个字母处
{
low=arr_bund[j];
high=arr_bund[j]+base;
}
if(s==arr_alp[j]&&i!=1)//第二个开始
{
var d=high-low;
low=low+arr_bund[j]*(high-low);
high=low+d*base;
}
str+=low;
str+="------------"
str+=high;
str+="<br>"
}
if(s=='!')//结束
{
encode=(low+high)/2;
str+="最终编码结果:"
str+=encode;
str+="<br>"
}
Output.innerHTML=str;
}
//-->
</script>
但,其他函数跟着触发后,得不到值啊?
比如下面的这个例子,main()函数改变了 NUM的值,然后接着 Encode()函数触发执行,得到的NUM的值还是3,这是为什么?
怎样才能各个函数共享值呢?<!--
var arr_alp;//字母表
var arr_bund;//每个字母表中的字母对应的下界
var base;//单位边界
var low,high;//在Encode函数中使用
var str="The process:<br>";
var NUM=3;
function main(value)
{
var NUM=Number(value);//获取字母表的个数
arr_alp=new Array(NUM);//字母表的个数
arr_bund=new Array(NUM);//每个字母表对应的下界
base=(1/NUM);//单元边界
var i;
for(i=0;i<NUM;i++)
{
//arr_alp[i]='A';
arr_alp[i]=String.fromCharCode('A'+i);
arr_bund[i]=i*base;
}
//alert(base);
str+=base;
str+="<br>";
for(i=0;i<NUM;i++)
{
// str+=arr_alp[i];
if(i==NUM-1)
{
str+=arr_bund[i];
str+="-------------";
str+=1;
str+="<br>";
}
else
{
str+=arr_bund[i];
str+="-------------";
str+=arr_bund[i+1];
str+="<br>";
}
}
Output.innerHTML=str;
}
function Encode(string)
{
var j;
var i=string.length;//i表示文本框已经输入字母的个数
var s=string.charAt(i);//捕捉文本框中输出的最后一个字符
alert(NUM);
for(j=0;j<NUM&&s!='!';j++)
{
alert(string);
if(s==arr_alp[j]&&i==1)//第一个字母处
{
low=arr_bund[j];
high=arr_bund[j]+base;
}
if(s==arr_alp[j]&&i!=1)//第二个开始
{
var d=high-low;
low=low+arr_bund[j]*(high-low);
high=low+d*base;
}
str+=low;
str+="------------"
str+=high;
str+="<br>"
}
if(s=='!')//结束
{
encode=(low+high)/2;
str+="最终编码结果:"
str+=encode;
str+="<br>"
}
Output.innerHTML=str;
}
//-->
</script>
var NUM=Number(value);//获取字母表的个数
改为
NUM=Number(value);
arr_alp=new Array(NUM);//字母表的个数
arr_bund=new Array(NUM);//每个字母表对应的下界
base=(1/NUM);//单元边界
var i;
for(i=0;i<NUM;i++)
{
arr_alp[i]=String.fromCharCode('A'+i);//没有被赋值,why?
arr_bund[i]=i*base;
}
alert(arr_alp[i-2]+arr_alp[i-1]);
这里面的arr_alp没有被赋值啊?为什么?
改为
arr_alp[i]=String.fromCharCode('A'.charCodeAt(0)+i);
http://blog.csdn.net/xiaofan_sap/archive/2009/10/15/4675108.aspx