简体   繁体   English

带选择/选项的Javascript onChange

[英]Javascript onChange with select/option

I have this javascript code: 我有这个javascript代码:

 window.onload = function() {
                var eSelect = document.getElementByClassName('item');

                var body = document.getElementById('body');
                var face = document.getElementById('face');
                var neck = document.getElementById('neck');
                var feet = document.getElementById('feet');
                var hand = document.getElementById('hand');
                var other = document.getElementById('other');
                var pin = document.getElementById('pin');
                var color = document.getElementById('color');
                var bg = document.getElementById('bg');

                var optOtherReason = document.getElementById('myPeng');

                eSelect.onchange = function() {
                    //Do something
                }
            }

That code works if eSelect gets element by id. 如果eSelect通过id获取元素,则该代码有效。 It won't work if it is by class name, please help me! 如果它是班级名称,它将不起作用,请帮助我!

(*) getElementsByClassName() (*)getElementsByClassName()

(*) by class name you are getting a array of dom elements. (*)按类名,您将获得dom元素数组。

var eSelect = document.getElementsByClassName('item');
var len = eSelect.length;
for( var i=0; i<len; i++ ) {
   eSelect[i].onchange = function() {  };
}

May be you are using 可能是您正在使用

document.getElementByClassName('yourclass');//wrong

Correct Syntex: 正确的Syntex:

document.getElementsByClassName('yourclass');

More Info: "document.getElementByClass is not a function" 更多信息: “ document.getElementByClass不是函数”

Note that some browsers/versions may not support this getElementsByClassName function Check Details . 请注意,某些浏览器/版本可能不支持此getElementsByClassName函数“ 检查详细信息”

If you want onchange for all Select with class: 如果您希望对所有带有类的Select进行onchange:

var eSelect = document.getElementsByClassName('test');
for(var i=0;i<eSelect.length;i++)
{
eSelect[i].onchange = function(){alert("sdfdsf");}
}

Demo 演示版

Try: 尝试:

var eSelect = document.getElementByClassName('item')[0]

The suggested getElementByClassName('item') actually gives back an array of matching elements unlike getElementById that gives the matching element directly. 建议的getElementByClassName('item')实际上会返回匹配元素的数组,这与getElementById直接提供匹配元素的情况不同。 So the [0] in suggested code selects the first and only element in that array. 因此,建议代码中的[0]选择该数组中的第一个也是唯一的元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM