2011-07-12 4 views
0

bodyタグは2つの設定された間隔を保持できますか?または2つの関数が同じ間隔を使用していますか?bodyタグはmultiply onload = "setInterval()"を保持できますか?

例:

<body onload="setInterval(function1, 500); setInterval(function2, 1000);"> 

<body onload="setInterval(function1, function2, 500");> 
+0

なぜまだ同じ理由の人々はまだ役に立たない回答を投稿している – ThiefMaster

+0

は...一つの理論は、そのI (jQueryのようなあなたのJSライブラリを除いて)本当にクロスブラウザーに優しいような、本当に包括的な方法を見つけられませんでした。 –

答えて

6

あなたは異なる機能で2回)のsetIntervalを(呼び出す関数を作成し、body.onloadでそれを呼び出すことができます()。

と私はあなたが1でそれらを包むまたはインラインこのようにそれらを呼び出さない限り、2つの機能が同じ間隔を持つことができることと思ういけない:

<body onload="setInterval(function(){ function1(); function2();}, 500);"> 
+0

あなたが説明した最初の方法を試してみて、完璧に働きました。ありがとうございました。 – travis

0

単にjQueryを使用して<script type="text/javascript">ブロックにイベントハンドラを(レジスタ)。

場合

あなたが必要とするすべての利用可能DOMツリーです:

$(document).ready(function() { 
    setInterval(function1, 500); 
    setInterval(function2, 1000); 
}); 

そうでない場合は(あなたはすべての画像がなどがロードされている必要がある場合):

$(window).load(function() { 
    setInterval(function1, 500); 
    setInterval(function2, 1000); 
}); 
+0

jQueryを使わなくても、それは簡単です。 – mck89

+0

もちろん可能ですが、イベントハンドラを接続することはすべてのブラウザで同じ関数では機能しません。どうしてjQueryを使ってクリーンな方法で作業してみませんか? – ThiefMaster

+0

イベントハンドラについては正しいですが、質問は間隔に関するものです...間違ってはいけません。あなたのソリューションはうまくいっています。しかし、人々はjQueryをあらゆる小さなものに使うのが好きではありません。純粋なjsで行うことができます – mck89

2

あなたの最初の例は、罰金のようになります。

window.onload = function() { 
    setInterval(function1, 500); 
    setInterval(function2, 1000); 
} 

function function1() { 
    console.log("function1"); 
} 

function function2() { 
    console.log("function2"); 
} 

hereのコード例を参照してください。

0

必要なだけ多くのオンロードを衝突なくインスタンス化します。

<SCRIPT> 

    // Class Definition 
    OnLoad = function(taskFunction,miliseconds) { 
     var context = this; 
     context.cnt = 0; 
     context.id = null; 
     context.doTask=taskFunction; 
     context.interval = function() { 
      if(document.readyState == "complete"){ 
       try{ context.stop();} catch(e){ throw new Error("stop error: " + context.id); } 
       try{ context.doTask();} catch(e){ throw new Error("load error: " + context.id); } 
      } 
     }; 
     context.start = function(timing) { 
      if(context.id && context.id!=null) 
       context.stop(); 
      context.cnt=0; 
      context.id=setInterval(context.interval,timing); 
     }; 
     context.stop = function() { 
      var _id = context.id; 
      clearInterval(context.id); 
      context.id=null; 
     }; 
     context.start(miliseconds ? miliseconds : 100); 
    }; 


    // Example Onloads 
    new OnLoad(function(){ 
     alert("onload 1"); 
    }); // uses default timing of 100 miliseconds 

    new OnLoad(function(){ 
     alert("onload 2"); 
    },200); 

    new OnLoad(function(){ 
     alert("onload 3"); 
    },300); 

</SCRIPT> 
関連する問題