我的Java Script功能有问题。从HTML我从textarea提取日期到数组,我想对数组中的值进行一些计算。 在循环中,我可以在创建的数组中看到值,但是在它们没有之后。为什么?任何的想法?请帮帮我......
function forwardAlgorytm () {
//1.P
var linesP = new Array();
linesP = $('#textPrawdopodobienstwo').val().split(' ');
var rozmP = linesP.length;
var macP = [];
for (var i=0; i<linesP.length; i++){
macP.push($.trim(linesP[i]));
} //alert(macP[1]); //-działa
var linesQ = new Array();
linesQ = $('#wartoscalfabet').val().split(' ');
var rozmQ = linesQ.length; //alert(rozmQ);
var macQ = [];
for (var i=0; i<linesQ.length; i++){
macQ.push($.trim(linesQ[i]));
}//alert(macQ[1]); // - to działa
//3.S
var linesS = new Array();
linesS = $('#wartoscsekwencji').val().split(' ');
var rozmS = linesS.length;
//alert(linesS[3]);
var macS = [];
for (var i=0; i<linesS.length; i++){
macS.push($.trim(linesS[i]));
}//alert(macS[2]);
//4.A
var A = [];
A = document.getElementById("macierzPrzejsc").value.split('\n').map(function(x){return x.split(' ')});
//alert(A[1][0]); //-działa WRESZCIE
//5.E
var E = [];
E = document.getElementById("macierzEmisji").value.split('\n').map(function(x){return x.split(' ')});
//alert(E[1][1]); -ok
//alert(A[0].length); -ok
/*
@param:
rozmP to n
rozmS to p
rozmQ to q
*/
var fw = [];
var forward= [];
var bbb = [];
var x1 = macQ.indexOf(macS[0]); //to działa
for (var m=0; m<E[0].length; ++m) {
var f = new Array(E[0].length);
//alert(E[x1][m]); //to działa w sumie
f[m] = new Array(macS.length);
f[m][0] = macP[m] * E[x1][m];
alert(f[m][0]); // we can see values of array
}
//alert(f[0][0]); // no alert after loop
for (var i=1; i<macS.length; ++i) {
var indeks = macQ.indexOf(macS[i]);
//alert(indeks); //-to działa
for (var j=0; j<E[0].length; ++j) {
var suma = 0;
// alert(suma); -działa : 0
for (var k=0; k<A[0].length; ++k) {
suma += (f[k][i-1])*A([k][j]);
}// alert(suma); //nadal suma ma 0
f[j][i] = E[indeks][j] * suma;
// alert(f[j][i]); //nie działa
}
}
}
答案 0 :(得分:0)
我认为你在谈论这个警报
for (var m=0; m<E[0].length; ++m) {
var f = new Array(E[0].length);
//alert(E[x1][m]); //to działa w sumie
f[m] = new Array(macS.length);
f[m][0] = macP[m] * E[x1][m];
alert(f[m][0]); // we can see values of array
}
//alert(f[0][0]); // no alert after loop
第二个警报不会显示,因为f在for循环中作用域,因此,在for循环之外它将不可用。这就是循环后没有警报的原因。
如果您需要外部信息,请在for循环外移动