为什么 this.title是undefined?
<!DOCTYPE html> <html> <head> <title> 事件</title> </head> <body> <input type='text' id='num1' /> <select id='operate'> <option value='+' title='add'>+</option> <option value="-" title="subtract">-</option> <option value="*" title="multiply">*</option> <option value="/" title="divide">/</option> </select> <input type='text' id='num2' /> <input type='button' value=' = ' /> <input type='text' id='result' value="" /> <script type="text/javascript"> var num1 = document.getElementById("num1").value; var num2 = document.getElementById("num2").value; var sign = document.getElementsByTagName("option"); var operate = document.getElementById("operate") var result = document.getElementById("result") var obj = { add: function(num1, num2) { return num1 + num2 }, subtract: function(num1, num2) { return num1 - num2 }, multiply: function(num1, num2) { return num1 * num2 }, divide: function(num1, num2) { return num1 / num2 } } // for (var i = 0; i < sign.length; i++) { // setSign(i) // } function setSign() { operate.addEventListener("change", function() { // result.value = obj[this.title]; console.log(this.class) }) } setSign() </script> </body> </html>
1
收起
正在回答
3回答
同学你好,也是有办法的。可以使用selectedIndex。
selectedIndex是select下拉框自带的一个属性,用来表示当前选中的opation标签的索引值
打印一下:
效果:
有了这个索引值就好办了。
通过operate.options,可以拿到所有的option,
如下:
控制台:
接下来就可以通过索引来拿到被选中的option的title了。
如下:
控制台:
同学给可以自己测试下哦。
为了更高效的为同学解答,如果还有其他疑问的话,可以新建一个问答进行提问哦。
如果帮助到了你,欢迎采纳~祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星