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

相关问题