优化`<select>`</select>的Javascript代码

时间:2014-03-01 21:50:30

标签: javascript

前段时间我决定停止使用事件属性来分离HTML和Javascript。

现在我有了这个HTML。

<form name="x" action="x.php" method="get">
   <label>
      <select name="language" size="1" id="languageselect">
         <option value="da" selected>Dansk (da)</option>
         <option value="en">English (en)</option>
         <option value="">Brug browserens indstillinger</option>
      </select>
   </label>
</form>

这个Javascript。 但我想知道我的代码是否会更好,似乎偶尔会在我的Javascript日志文件中收到有关“this.form.submit();”的错误消息。

<script type="text/javascript">
'use strict';

function languageformsubmit () {
   this.form.submit();
}

function init_hjemmeside_addeventlistener () {
   var languageselect;
   if (document.getElementById('languageselect')) {
      languageselect = document.getElementById('languageselect');
      languageselect.addEventListener('change', languageformsubmit, false);
   }
}

function init_hjemmeside_attachevent () {
   var languageselect;
   if (document.getElementById('languageselect')) {
      languageselect = document.getElementById('languageselect');
      languageselect.attachEvent('onchange', languageformsubmit);
   }
}

if (window.addEventListener) {
   window.addEventListener('load', init_hjemmeside_addeventlistener, false);
} else if (window.attachEvent) {
   window.attachEvent('onload', init_hjemmeside_attachevent);
}
</script>

代码工作正常,但我想知道它是否可以更好。

1 个答案:

答案 0 :(得分:0)

您可以发布您获得的确切错误,以便我们为您提供帮助。 除此之外,它可以满足您的需求,在您更改选择中的选定选项时提交表单。 顺便说一下,你可以通过使用jQuery来改进它,尽管你可能不希望这样。

JQuery的:

$(document).ready(function() {
    $('#languageselect').on('change', function() {
        $(this).closest('form').submit();
    });
});