【问题标题】:Javascript select drop down menu onchange not firing properlyJavascript选择下拉菜单onchange未正确触发
【发布时间】:2010-10-29 01:45:42
【问题描述】:

我的 onchange 没有正确触发 javascript 方法。

选择代码(在 HTML 文件中)

<select id="crit_1" onchange="crit1Update()">
    <option value=null>Criteria 1</option>
 <option value="major">Major</option>
 <option value="grad">Graduation Year</option>
</select>

crit1Update() 代码(在与包含上述内容的 HTML 文件位于同一文件夹中的外部 filter.js 文件中,HTML 头部包含以下代码

<script type="text/javascript" src="filter.js">
</script>

function crit1Update() {
 var crit1 = document.criteria.getElementsByID("crit1");
 var criteria1 = crit1.options[crit1.selectedIndex].value;
 alert("criteria1"); // this is never firing, so this isnt getting called
 if (criteria1 == null) {
  // eventually set all other lists to null in here as well
  filter(null,null,null,null,null,null)
            // the above returns all the resumes 
            // (this is eventually going to filter resumes)
 }
 else if (criteria1 == "major") {
  alert("Major!");
 }
}

我是否遗漏了任何明显或不明显的错误?我不明白为什么没有调用 alert("criteria1"。我来自 java 背景,这是我第一次涉足 JS,所以我可能会遗漏一些简单的东西。

感谢您的帮助。

【问题讨论】:

  • 检查你的打字情况。也许它会有所帮助。

标签: javascript onchange


【解决方案1】:

这个方法调用有错别字:

document.criteria.getElementsByID(

应该是

document.criteria.getElementById(
                            ^  ^ no "s" and lower case "d"

还要确保 id 与您的 HTML 元素匹配,例如“crit_1”

【讨论】:

  • 很好地抓住了第一个错字,但你也错过了“s” - getElementsByID 应该是 getElementById
  • 感谢@Phil Brown 我太专注于“D”,错过了 s。
【解决方案2】:

您的&lt;select&gt; ID 为“crit_1”,您的函数正在查找 ID“crit1”(无下划线)。

&lt;select&gt; 元素作为对函数的引用可能是一个更好的主意,例如

JavaScript

function crit1Update(crit1) {
    var criteria1 = crit1.options[crit1.selectedIndex].value;

HTML

<select id="crit1" name="crit1" onchange="crit1Update(this)">

【讨论】:

  • @Ross:阅读一些你想要构建的项目的教程。这样可以防止在键入脚本时出错。
  • @Klox,这可能是个好主意。我一直在我的 js doc、html doc 和 www.w3schools.com 之间来回切换
  • 是的 w3schools 也是适合我这样的初学者的地方。继续尝试和学习。;)
猜你喜欢
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-26
相关资源
最近更新 更多