2013-10-14 29 views
0

这似乎是一个简单的事情,我真的很想多了解一点。这是我的问题。从外部JavaScript文件访问表单元素

我有一个选择与坐在一个窗体内的几个不同的选项。我需要一个变量来保存哪个选项,以便从那里我可以根据选择的内容做不同的事情。

这里是我的html:

<!DOCTYPE html> 
    <html> 
    <head> 
     <title>Test</title> 
     <script src="script.js" type="text/javascript"></script> 
    </head> 
    <body> 

    <form method="get"> 
     <table> 
      <tr> 
       <p> 
        Please choose your class: 
       </p> 
      </tr> 
      <tr> 
       <td> 
        <select name= "classSelect" id="classSelect" size = "3"> 
         <option value = "CS211" selected = "selected">CS-211</option> 
         <option value = "CS111">CS-111</option> 
         <option value = "CS275">CS-275</option> 
        </select> 
       </td> 
      </tr> 
     </form 
    </body> 
</html> 

然后在我的JavaScript文件,我只是想声明一个全局变量:

var currentSelection = document.forms[0].classSelect.selectedIndex; 

现在currentSelection总是空,我不知道为什么。

+1

也许使用jQuery和做$( “#classSelect”)VAL() ? – NWard

回答

3

当您设置变量时,DOM尚未呈现。要么等待DOM启动其就绪事件,要么在文档加载后设置脚本运行。这里有一个解决方案:

window.onload = function() { 
    // run this code on load 
}; 

请注意,这将覆盖以前的onload函数。如果您有jQuery的可用,你应该这样做,而不是为了避免任何会覆盖:

$(window).load(function() {}); 

这些变体也行。

$(function() {}); 
$(document).ready(function() {}); 
+0

完成我需要做的事情的最佳方式是什么? –

+0

我修改了答案。 – hexacyanide

+0

currentSelection仍未定义。我期待它的初始值为零,因为我在默认情况下选择了我的选择列表中的第一个元素,如果我点击第二个元素,它应该变成一个,等等。我是否在讨论这个错误? –