:次のように
<div onclick="invis('one')" id="one"></div>
<button onclick="domove()">hello</button>
<div onclick="invis('two')"id="two"></div>
<div onclick="invis('three')"id="three"></div>
<script type="text/javascript">
function domove()
{
$("one").style.left+=10+'px';
setTimeout(domove,20);
}
</script>
Iは#one {} CSSのスタイリングを有する
$("one").style.left+=10+'px';
「増加によってstyle.leftするために一致しません10 "となる。それはsyle.leftの現在の値を「追加 '10pxの' に相当
これはstyle.leftは常に10pxのにリセットされていることを意味し
この試してみてください。。
<script type="text/javascript">
//Global variable to increment every function run
numberOfPixels = 10;
function domove()
{
$("one").style.left=numberOfPixels+'px';
numberOfPixels += 10;
setTimeout(domove,20);
}
</script>
編集:罰金作品をこのJSFiddle
中にエラーに...最新のリビジョンを保存するのを忘れ、それはTHISフィドルで動作します。 http://jsfiddle.net/CDyQr/1/
Anot彼女の編集:ユーザーは下のコメントでグローバルスコープから抜け出す方法を尋ねました。ここでクロージャを使用する方法である:スコープとそれを操作する方法の詳細については
http://jsfiddle.net/CDyQr/2/
、ここでは非常に詳細なスタックオーバーフローの答えは:
What is the scope of variables in JavaScript?
それは私のために働く。もともと私は$( "one")に設定していました。style.left =($( "one")。style.left + 10)+ 'px';それも私のために働いていなかった。また、私はjQueryを使用していない、私は最初にそれなしで基本を学ぼうとしている。私はちょうど$文字を "document.getElementById(" ")" ...に等しく設定したいのですが、上記のコードスニペットが正しく動作しない理由についての考えはありますか?グローバル化せずにこれを達成する方法はありますか? – T110