从外部javascript文件访问表单元素

从外部javascript文件访问表单元素,javascript,forms,Javascript,Forms,这似乎是一件简单的事情,我真的想多了解一点。这是我的问题 我有一个select,表单中有几个不同的选项。我需要一个变量来保存选择的选项,这样我就可以根据选择的内容做不同的事情 这是我的html: <!DOCTYPE html> <html> <head> <title>Test</title> <script src="script.js" type="text/javasc

这似乎是一件简单的事情,我真的想多了解一点。这是我的问题

我有一个select,表单中有几个不同的选项。我需要一个变量来保存选择的选项,这样我就可以根据选择的内容做不同的事情

这是我的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>

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

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

window.onload = function() {
  // run this code on load
};
请注意,这将覆盖以前的onload函数。如果您有可用的jQuery,则应改为执行此操作以避免任何覆盖:

$(window).load(function() {});
这些变体也起作用:

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

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

window.onload = function() {
  // run this code on load
};
请注意,这将覆盖以前的onload函数。如果您有可用的jQuery,则应改为执行此操作以避免任何覆盖:

$(window).load(function() {});
这些变体也起作用:

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

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

window.onload = function() {
  // run this code on load
};
请注意,这将覆盖以前的onload函数。如果您有可用的jQuery,则应改为执行此操作以避免任何覆盖:

$(window).load(function() {});
这些变体也起作用:

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

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

window.onload = function() {
  // run this code on load
};
请注意,这将覆盖以前的onload函数。如果您有可用的jQuery,则应改为执行此操作以避免任何覆盖:

$(window).load(function() {});
这些变体也起作用:

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


可能使用JQuery并执行$classSelect.val?可能使用JQuery并执行$classSelect.val?可能使用JQuery并执行$classSelect.val?可能使用JQuery并执行$classSelect.val?完成所需操作的最佳方法是什么?我已修改了答案。currentSelection仍未定义。我希望它最初的值为零,因为我默认选择了选择列表中的第一个元素,如果我点击第二个元素,它应该会变为一,等等。我是不是搞错了?我已经解决了当前的问题,我为选择器添加了一个onchange事件,该事件调用了一个函数来执行此操作:x=document.getElementByIdclassSelect.selectedIndex;y=document.getElementByIdclassSelect.options;我想我很困惑,因为你不能在函数外部全局定义这样的变量?你可以定义这样的变量,但你可能在给它们赋值之前访问它们。完成我需要做的事情的最佳方法是什么?我已经修改了答案。currentSelection仍然没有定义。我希望它最初的值为零,因为我默认选择了选择列表中的第一个元素,如果我点击第二个元素,它应该会变为一,等等。我是不是搞错了?我已经解决了当前的问题,我为选择器添加了一个onchange事件,该事件调用了一个函数来执行此操作:x=document.getElementByIdclassSelect.selectedIndex;y=document.getElementByIdclassSelect.options;我想我很困惑,因为你不能在函数外部全局定义这样的变量?你可以定义这样的变量,但你可能在给它们赋值之前访问它们。完成我需要做的事情的最佳方法是什么?我已经修改了答案。currentSelection仍然没有定义。我希望它最初的值为零,因为我默认选择了选择列表中的第一个元素,如果我点击第二个元素,它应该会变为一,等等。我是不是搞错了?我已经解决了当前的问题,我为选择器添加了一个onchange事件,该事件调用了一个函数来执行此操作:x=document.getElementByIdclassSelect.selectedIndex;y=document.getElementByIdclassSelect.options;我想我很困惑,因为你不能在函数外部全局定义这样的变量?你可以定义这样的变量,但你可能在给它们赋值之前访问它们。完成我需要做的事情的最佳方法是什么?我已经修改了答案。currentSelection仍然没有定义。我希望它最初的值为零,因为我默认选择了选择列表中的第一个元素,如果我点击第二个元素,它应该会变为一,等等。我是不是搞错了?我已经解决了当前的问题,我为选择器添加了一个onchange事件,该事件调用了一个函数来执行此操作:x=document.getElementByIdclassSelect.selectedIndex;y=document.getElementByIdclassSelect.options;我想我是糊涂了
因为你不能在函数外部全局地定义这样的变量,你可以定义这样的变量,但是你可能在给它们赋值之前就访问它们了。