为什么 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 星