0

id='seekline'次のコードを使用して、 by var1(ほとんどの場合 .1 未満) で行を移動したいのですが、 and を追加するvar1と問題が発生しjます。

プラス記号は、追加する代わりに連結します。Number()parseInt()parseFloat()、および 1 を乗算するか 0 を加算して加算を強制しようとしましたが、何らかの理由で連結を停止できません。parseInt()またはparseFloat()(例)を使用するとparseInt(j,10)、コードが機能しなくなります。

px文字列の分割は、 fromを削除することelement.style.leftです。

function move(var1) {
    element = document.getElementById('seekline');
    console.log(var1, element.style.left);
    var str=(element.style.left);
    var n=str.split("p");
    var j = n[0];
    Number(j);
    Number(var1);
    var k = var1 + j;
    var f = k.concat("px");
    console.log(j, k, f);
    element.style.left = f;
}
4

3 に答える 3

0

Number()変数自体を変更するのではなく、渡された文字列の数値を返すため、呼び出しの結果を に割り当てる必要があります。

+fooを行うのと同じであることに注意してくださいNumber(foo)

function move(var1) {
  var style = document.getElementById('seekline').style;

  // removes last two 'px' characters
  var oldValue = +style.left.slice(0, -2);

  // converts to number type, then adds 2 to it
  var1 = +var1;
  var1 += 2;

  // check to see if number is NaN or +/-Infinity
  if (isFinite(var1)) {
    // only now string concatenates the term 'px' to it
    element.style.left = oldValue + var1 + 'px';
  }
}
于 2013-05-17T05:19:02.513 に答える
0

JavaScript から取得した数値を扱う秘訣は、文字列 'px' を削除して数値に変換することです。

parseInt(element.style.left.replace('px', ''))
于 2013-05-16T23:09:26.453 に答える
0
function move(var1) {
    var element = document.getElementById('seekline'),
        left    = parseInt(element.style.left.replace('px',''),10);

    element.style.left = ((left++) + var1) + 'px';
}
于 2013-05-16T22:53:27.087 に答える