原生JavaScript选择onchange this.value undefined

时间:2014-03-04 18:47:58

标签: javascript html

我有一个由php文件生成的select标签,如果可以避免的话我宁愿不要改变。我也没有能力使用jQuery来解决我的问题。所以这就是我试图设置onchange事件的方式:

var d = document.getElementById('lang_choice');
d.onchange = function(){
    window.alert(this.value);
}

弹出框只是说未定义。我检查了html,它在选项标签中设置了值属性。所以我猜我误解了这个系统的一些东西,一些解释会很棒。

4 个答案:

答案 0 :(得分:2)

var d = document.getElementById('lang_choice');
d.onchange = function(){
    window.alert(this.options[this.selectedIndex].value);
}

它适用于较旧的浏览器。

虽然你的方法应该有用。代码中的其他地方一定有错误。检查控制台。

答案 1 :(得分:0)

请确保在DOM对象可用后绑定onchange事件并确保选项标记值属性。

<select id="lang_choice">
  <option value="en">English</option>
  <option value="es">Spanish</option>
</select>

答案 2 :(得分:0)

这对我有帮助。

选择:

$('select_tags').on('change', function() {
    alert( $(this).find(":selected").val() );
});

收音机/复选框:

$('radio_tags').on('change', function() {
    alert( $(this).find(":checked").val() );
});

答案 3 :(得分:-1)

IE有一个错误(不确定版本),onchange会在设置值之前被触发,所以请使用如下所示

var d = document.getElementById('lang_choice');
d.onchange = function(){
   var th = this;
   setTimeout(function(){ window.alert( th.value ); }, 10);
}