DOM0级事件调用自定义函数时,照理说加了括号会在页面打开时自动调用,为什么就报错了?

来源:2-9 选择题

慕函数1351374

2020-01-26 17:41:20

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>HTML事件</title>
    <style>
        input{
            width:100px;
            height:30px;
            background:white;
            border:grey 1px double;
            font-size:16px;
        }
    </style>

</head>
<body>
<input type="button" id="btn" name="button1" value="点击我试试"/>
<script>
    var v_input=document.getElementById("btn");
    var para2="green";

    function clickFn(){
        this.style.backgroundColor=para2;
        // alert("我是一个函数");
    };
    v_input.onclick=clickFn();  //加了括号之后报错,不加括号正常

</script>

</body>
</html>
报错信息:TypeError: Cannot set property 'backgroundColor' of undefined
写回答

1回答

好帮手慕言

2020-01-29

同学你好,是this指向不对,如果加了(),那么clickFn函数中的this指向的是window。因此会报错

可以修改一下:

http://img.mukewang.com/climg/5e3158d709671e9506810213.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 40143 问题

查看课程