2011-03-22 105 views
0

我有这个在Javascript:为什么这不起作用? JavaScript的

var inx=[2,3,4,5]; 
var valarray=[]; 
for (i=0; i<inx.length; i++) { 
    valarray[i]==inx[i]; 
} 
for (i=0; i<inx.length; i++) { 
    var posi=inx.indexOf(3); 
    var valy=valarray[posi-1]+1; 
    valarray[i]=valy; 
} 
alert(valarray); 

的valarray保持返回南,南,南,男的不是数字...

我怎样才能解决这个问题?

回答

2

线valarray[i]==inx[i];运营商不会对你似乎希望它是什么。

在JS中,=是赋值运算符,==是具有类型强制的相等运算符,而===是严格相等运算符。

举几个例子:

var a; 
alert(a = 2);  // 2 

alert('2' == '2'); // true 
alert(2 == 2);  // true 
alert('2' == 2); // true (because of type coercion, 2 == '2') 

alert('2' === '2'); // true 
alert(2 === 2.0); // true 
alert('2' === 2); // false (strict equality: 2 !== '2') 
0

你比较,你应该分配,试试这个:

var inx=[2,3,4,5]; 
var valarray=[]; 
for (i=0; i<inx.length; i++) { 
valarray[i]=inx[i]; //previously there was a == here 
} 
for (i=0; i<inx.length; i++) { 
var posi=inx.indexOf(3); 
var valy=valarray[posi-1]+1; 
valarray[i]=valy; 
} 
alert(valarray); 
3
valarray[i]==inx[i]; 

这是一个合乎逻辑的比较,而不是分配。

valarray[i]=inx[i]; 
0
for (i=0; i<inx.length; i++) { 
    valarray[i]==inx[i]; 
} 

您使用的是比较操作(==),而不是分配(=)这里

0

它是一个JavaScript错误,你只用

valarray[i]==inx[i]; 

你应该使用:

valarray[i]=inx[i]; 
0
valarray[i]==inx[i]; 

必须成为

valarray[i]=inx[i];