2017-09-13 64 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>

相關問題