2016-04-27 6 views
0

私は私の機能の機能の否定でかなり混乱しています。元の関数は、n番目のインデックスから始まる9個の要素を取り、その変換位置を減少させます。私がやりたいこと機能の否定

function pushIt(max, target, index, count) { 

    if (count == max || count == img.children ) { 
     running = false; 
    return; 
    } 

    var tmp    = target[index]; 
    var matrix   = window.getComputedStyle(tmp).getPropertyValue("transform"); 
    var translate_left = matrix.split(",")[4]; 
    var translate_top = matrix.split(",")[5].split(")")[0]-215; 
    tmp.style.transform = "translate3d(" + translate_left + "px," + translate_top + "px,0)"; 
    setTimeout(function(){ 
    pushIt(max, target, index + 1, count + 1); 
    },50) 
} 

その機能を否定することで、例えばそれ文句を言わないの減少が、(n番目の* 3)の位置変換増加 - 1つの要素(ダウン9つの要素カウント)

function pushItDOWN(max, target, index , count) { 

    if (count == max || index < 0) { 
     running = false; 
    return; 
    } 
    console.log("down"); 
    var tmp     = target[index]; 
    var matrix    = window.getComputedStyle(tmp).getPropertyValue("transform"); 
    var translate_left  = matrix.split(",")[4]; 
    var translate_top  = matrix.split(",")[5].split(")")[0]+215; 
    tmp.style.transform  = "translate3d(" + translate_left + "px," + translate_top + "px,0)"; 
    setTimeout(function(){ 
    pushItDOWN(max, target, index - 1, count + 1); 
    },50) 
} 
} 

何秒を(例えば、ビューポートから)忘却への変換を設定し、何らかの形で最初の関数の機能を破壊します。

私は問題を引き起こしているいくつかの重要な事実を見落としました、私は問題の根本を見つけることができないようです。 demoライブ より良く理解

答えて

1

のために、私は100%わからないんだけど、ほとんどの場合、これはあなたのエラーです:

これは、文字列になります:

matrix.split(",")[5].split(")")[0] 

は、それが"500"であると言うことができます次いで

matrix.split(",")[5].split(")")[0] + 215 
// equals 
"500" + 215 
// results in (because + is both used as string concatenation as addition) 
"500215" 
// - will work, because it only has one meaning 
"500" - 215 // results in 285 

intとして値を解析(または必要に応じてフロート)215添加前:

parseInt(matrix.split(",")[5].split(")")[0]) + 215 
+0

oh!だからこれはそれだった、感謝は今うまく働く:) – Darlyn