2016-03-26 10 views
0

ページが読み込まれ、スクリプトではないときに定義される変数を作成するにはどうすればよいですか?html5 javascript、グローバル変数

<script> 
 
    var comp = 0; 
 
    function mMove(e) 
 
    {   
 
     var x = e.screenX;   
 
     if (x > comp + 80) 
 
     { 
 
      comp = x; 
 
      somethingcool(); 
 
     }  
 
    }   
 
</script>
<video id="vid_ID" onclick="vidclick()" onmousemove="mMove(event)" controls tabindex="0" autobuffer preload> 
 
     <source type="video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2&quot;" src="test.mp4"></source> 
 
     <p>Sorry, your browser does not support the &lt;video&gt; element.</p> 
 
    </video>

私はいくつかのビデオやれるonmousemoveイベントを持っています。私はマウスがx軸に沿って80ピクセル移動するたびにsomethingcool()関数を実行したい。私はcomp変数を格納するための何らかの方法が必要です。

+1

問題は何ですか?私はあなたのこのコードがうまくいくと思います。それぞれのmousemoveイベントスクリプト内の –

+0

は、から始まり、関数mMove(e)からではないので、常に0になります。 – user2213608

+1

ページをリロードしている場合に起こります。ページをリロードしていますか?あなたは、マウスの動きを避けるためのスクリプトを持っているページをロードしていますか? –

答えて

0

document.ready関数を使用できます。ページを読み込んだり更新したりするたびに、ページと共に読み込まれます。単にcomp = 0またはvar comp = 0を追加するだけで、コード内のどこでもグローバルJavaScript変数として使用できます。これはjquery関数です。それ以上のこと:https://learn.jquery.com/using-jquery-core/document-ready/

+0

は動作しません。 私はメッセージを準備しましたが、プログラムがこのスクリプトを終了するとすぐにすべての変数が削除されます – user2213608

+0

すべてのJavaScript変数は、プログラムが終了したときに削除されることを意図しています。変数の値を保持したい場合は、localStorageまたはクッキーを使用してデータを格納できます。 localStorageは、データを一時的に保存するために追加されたCookieよりもクリーンなソリューションです。また、セッションが終了しても持続するため、セッション記憶領域よりも優れています。 –

1

あなたはあなたが書いているページをリロードしていると述べた後。問題は明らかです。 あなたは値を上書きしています。だからここ

ソリューション

1.は、あなたがそのページのうち、変数宣言を移動していることを確認してください可能な解決策です。それをメインページに移動します。または、そのページがロードされるたびに値は0に設定されます。

2.値を保存するには、LocalStorageを使用します。あなたはこれを行うことができます。

<script> 

    if(localStorage.getItem("compValue")){ //First time page load storage will be undefined set the value to 0. On consecutive calls this if block will not execute and hence value will not be overwritten. 
    localStorage.setItem("compValue", 0); 
    } 

    var comp = localStorage.getItem("compValue"); //read from storage 
    function mMove(e) 
    {   
     var x = e.screenX;   
     if (x > comp + 80) 
     { 
      comp = x; 
      somethingcool(); 
     }  
    }   
</script> 

タスクがストレージを使用する非常に複雑ではないので、私は、オプション1を好むwoud。変数をグローバルにして、それを上書きしないように注意してください。

+0

私はそのページにスクリプトを読み込んでいるわけではありませんでした。私はそのページ全体をスクリプトとHTMLで一度読み込んでいます。いずれにせよ私は私の問題を解決しました。私がしたことは、すべての関数を1つにまとめたことです。です。何らかの理由で各機能のためにがあったときに、変数 – user2213608

+0

@ user2213608がうまくいきませんでした。同じ名前のいくつかの変数があったかもしれない... whats so ever .. happy coding !!! –

関連する問題