2017-09-13 10 views
0

基本的には、関数の引数として値を渡してから、別の関数で同じ値を使用したい変数。問題は、最初の関数の中で変数を定義すると、その関数内でしか変数にアクセスできないということです。私は何をしますか?JS - 別の関数で使用する変数に関数の引数を格納する

<html> 
 
    <body> 
 
    <script> 
 
     function showUser(selection) { 
 
      var selectedOption = selection;//THIS IS THE VARIABLE I WANT TO ACCESS IN ANOTHER FUNCTION 
 
      //Some code 
 
     } 
 
     function saveTime(solvedTime) { 
 
//This is where I am using the variable 
 
xmlhttp.open("GET","savetimes.php?q="+selectedOption+"&time="+solvedTime, true); 
 
      xmlhttp.send(); 
 
      } 
 
    </script> 
 
    <form id="session"> 
 
\t  <select name="sessions" onchange="showUser(this.value)"> 
 
\t  <option value="1">Session 1</option> 
 
\t  <option value="2">Session 2</option> 
 
\t  </select> 
 
\t </form> 
 
     <br> 
 
\t <div id="timesList"> 
 
\t </div> 
 
    </body> 
 
</html>

+0

、それはグローバル、それを渡してください... –

答えて

3

は、関数の外であなたの変数を宣言します。ここに私のコードです。そのスコープ内のすべての機能にアクセスできます。グローバルスコープでこのオブジェクトを変更しない場合は、IIFEでラップすることができます。イベントを処理するにはaddEventListenerを使用してください。これはイベントを処理するためのより好ましいアプローチです。また、要求前に値が選択されているかどうかを確認するには、saveTimeをチェックしてください。

(function() { 
 

 
    const sessions = document.getElementById('sessions'); 
 
    let selectedOption; 
 
    
 
    sessions.addEventListener('change', function() { 
 
     selectedOption = this.value; 
 
     console.log(selectedOption); 
 
    }); 
 
    
 
    function saveTime(solvedTime) { 
 
     if(selectedOption) { 
 
     xmlhttp.open("GET","savetimes.php?q="+selectedOption+"&time="+solvedTime, true); 
 
     xmlhttp.send(); 
 
     } 
 
    } 
 
    
 
})();
<html> 
 
    <body> 
 
    <form id="session"> 
 
\t <select id="sessions" name="sessions"> 
 
\t  <option value="1">Session 1</option> 
 
\t  <option value="2">Session 2</option> 
 
\t </select> 
 
    </form> 
 
    <br> 
 
    <div id="timesList"></div> 
 
    </body> 
 
</html>

関連する問題